我似乎无法将每个单独的行从.txt文件拉到元组中。 'city-data.txt'文件只是50个州,国会大厦及其纬度/经度的列表。我需要创建一个所有状态的元组。
这是我目前的代码 -
def read_cities(file_name):
file_name = open('city-data.txt' , 'r')
for line in file_name:
road_map = ((line.split('\t')))
return road_map
file_name.close()
print(read_cities('city-data.txt'))
当它运行时,它只打印.txt文件中的第一行,如下:
['Alabama', 'Montgomery', '32.361538', '-86.279118\n']
答案 0 :(得分:1)
它只打印第一行的原因是因为这个
for line in file_name:
road_map = ((line.split('\t')))
return road_map
消耗第一行后,您将立即返回。这就是为什么它只打印第一行。
相反,您需要将它们存储在列表中,并最终返回该列表。
def read_cities(file_name):
file_name = open('city-data.txt' , 'r')
road_maps = []
for line in file_name:
road_map = ((line.split('\t')))
road_maps.append(road_map)
file_name.close()
# road_maps is a list, since you wanted a tuple we convert it to that
return tuple(road_maps)
print(read_cities('city-data.txt'))
我需要创建一个包含所有状态的元组。
这是否意味着您只需要每行的第一列?如果是,请将其修改为
def read_cities(file_name):
# notice I've changed this to use file_name instead of
# the hard-coded filename string
file_name = open(file_name , 'r')
# if you need uniqueness, use states=set() and use .add instead
# of .append
states = []
for line in file_name:
line_split = line.split('\t')
# line_split is a list and the 0th index is the state column
state = line_split[0]
# use states.add if you used a set instead of a list
states.append(state)
file_name.close()
return tuple(states)
print(read_cities('city-data.txt'))