python - Python 中的循环模式

标签 python

我不太明白 Python 如何循环遍历列表和文件。

假设我有这样的文件:

文本文件:

Stations
--------
stn       Name                                 Parameter        Data source                              Longitude/Latitude       Coordinates [km] Elevation [m]
ARA       Arolla                               rre250c0         XX                                                 XXX             XXX             0
BOQ       Bouquetins                           rre250c0         XX                                                 XXX             XXX             0
BRE       Bréona                               rre250c0         XX                                                 XXX             XXX             0
CDR       Col de Riedmatten                    rre250c0         XX                                                 XXX             XXX             0       
CTZ       Crettaz                              rre250c0         XX                                                 XXX             XXX             0                                           
HOL       Hohlicht                             rre250c0         XX                                                 XXX             XXX             0        
TRI       Trift                                rre250c0         XX                                                 XXX             XXX             0        
TAP       Täschalp                             rre250c0         XX                                                 XXX             XXX             0        
VOU       Vouasson                             rre250c0         XX                                                 XXX             XXX             0        

这就是我的代码:

statList = ["ARA", "BOQ", "BRE", "CDR", "CTZ",
            "FEP", "HOL", "TRI", "TAP", "VOU"]

legend34413 = open("textfile.txt", "r")

for k in statList:
    for i in legend34413:
        print k #always prints "ARA"
        #do more stuff

但是,我的第一个 for 循环似乎没有遍历整个 statList。它只为文件中的每一行打印 ARA,而不是下一行,即 BOQ。 这是为什么?!

最佳答案

一旦循环执行了一次,并为文件中的每一行都打印了 ARA,它就会到达文件末尾并耗尽迭代器。如果你想让它返回并从头开始,你需要倒带它:

for k in statList:
    for i in legend34413:
        print k
    legend34413.seek(0)

现在您的代码将为文件中的每一行打印一次ARA。然后它将为文件中的每一行打印一次 BOQ,然后为每一行打印一次 BRE,依此类推。

关于python - Python 中的循环模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30048573/

相关文章:

python - 如何在 views.py 中检查用户的权限?

python bottle framework - 如何将字典传递给嵌套模板?

python - NoReverseMatch at/Reverse 未找到 'post_detail'

python - Pandas ( python ): Fill empty cells with with previous row value?

python - 如何使用 Reddit API 获取超过 1000 张图片?

python - Django/python : How to pass the form. cleaned_data 值到 HttpResponseRedirect 作为参数?

python - Pandas 按组删除前导零值

python - Pandas 中的数据框转换

python - 试图理解类和对象如何相互交互 - python

Python解析括号中的 block