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 に答える