1

我正在尝试编写一个从文本文件返回城市列表的函数,以便在调用该函数时,您可以在其后放置一个索引,它将返回相应的城市。

例子:

citylist('MYFILE.txt')[3]

到目前为止,我有

def citylist(filename):
    assert type(filename)==str

    with open(filename) as FileObject:
        for line in FileObject:
            q=line.split('\t')
            print q[12],

有500个投诉。在我将每个字符串(投诉)拆分为一个列表后,城市名称是列表中的第 13 个索引。但是我被困住了,因为我所能做的就是将所有城市名称打印为无法索引的非数据类型。

4

2 回答 2

2

您可以创建一个列表并返回它:

def citylist(filename):
  assert type(filename)==str  #isinstance(filename,str) is more idiomatic here.

  output = []
  with open(filename) as FileObject:
    for line in FileObject:
      q = line.split('\t')
      output.append(q[12]) 
  return output

或者,更简洁:

def citylist(filename):
    with open(filename) as f:
        return [ line.split('\t')[12] for line in f ]

在最后一个示例中,我使用列表理解构建了列表。

于 2012-10-22T23:43:22.297 回答
0
def citylist(filename):
  assert isinstance(filename, str)
  return [line.split('\t')[12] for line in open(filename)]

列表推导等效于以下扩展for循环:

result = []
for line in open(filename):
  result.append(line.split('\t')[12]) 
于 2012-10-22T23:43:47.493 回答