使用 for 循环分配列表项导致无限循环
Assigning list items with for loop causing infinite loop
我有一个包含美国所有邮政编码及其纬度和经度的文件。该文件的格式为 ZIP,LAT, LONG\n
。
我打算将这些保存到数据库中,所以我逐字遍历文件并设置了一个 counter
变量。如果 counter == 1
它应该将值分配给 zip_codes[]
如果 counter == 2
将值分配给 latitude[]
如果 counter == 3
将值分配给 longitude[]
,但是当我 运行 下面的代码来测试它是否正确添加了邮政编码值时,它变成了一个无限循环,我必须强制退出 IDLE
(文件可在here查看)
zip_code_file = open('zip_codes.txt')
zip_codes=[]
latitude=[]
longitude = []
counter = 1
for s in zip_code_file.read().split(','):
s = s.strip()
if counter ==1:
zip_codes.append(s)
counter = counter +1
elif counter == 2:
latitude.append(s)
counter = counter+1
elif counter == 3:
longitude.append(s)
counter = 1
print(zip_codes)
有人知道这里发生了什么吗?
你需要少一点循环:
zip_code_file = open('zip_codes.txt')
zip_codes = []
latitude = []
longitude = []
for line in zip_code_file:
zipcode, lat, lng = line.strip().split(',')
zip_codes.append(zipcode)
latitude.append(lat)
longitude.append(lng)
print(zip_codes)
逗号分隔值的文件应使用 csv
模块处理
import csv
with open('zip_codes.txt') as f:
r = csv.reader(f)
next(r) # skip the header
zip_codes, latitudes, longitudes = zip(*r)
我有一个包含美国所有邮政编码及其纬度和经度的文件。该文件的格式为 ZIP,LAT, LONG\n
。
我打算将这些保存到数据库中,所以我逐字遍历文件并设置了一个 counter
变量。如果 counter == 1
它应该将值分配给 zip_codes[]
如果 counter == 2
将值分配给 latitude[]
如果 counter == 3
将值分配给 longitude[]
,但是当我 运行 下面的代码来测试它是否正确添加了邮政编码值时,它变成了一个无限循环,我必须强制退出 IDLE
(文件可在here查看)
zip_code_file = open('zip_codes.txt')
zip_codes=[]
latitude=[]
longitude = []
counter = 1
for s in zip_code_file.read().split(','):
s = s.strip()
if counter ==1:
zip_codes.append(s)
counter = counter +1
elif counter == 2:
latitude.append(s)
counter = counter+1
elif counter == 3:
longitude.append(s)
counter = 1
print(zip_codes)
有人知道这里发生了什么吗?
你需要少一点循环:
zip_code_file = open('zip_codes.txt')
zip_codes = []
latitude = []
longitude = []
for line in zip_code_file:
zipcode, lat, lng = line.strip().split(',')
zip_codes.append(zipcode)
latitude.append(lat)
longitude.append(lng)
print(zip_codes)
逗号分隔值的文件应使用 csv
模块处理
import csv
with open('zip_codes.txt') as f:
r = csv.reader(f)
next(r) # skip the header
zip_codes, latitudes, longitudes = zip(*r)