从另一个文件读取多行到元组

时间:2016-09-27 01:38:32

标签: python-3.x tuples

我似乎无法将每个单独的行从.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']

1 个答案:

答案 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'))