0

これは次のデータのサンプルです

"TABITHA","OLLIE","JAIME","WINIFRED"

その後に、それを正しく読み込むコードが続きます。

with open("names.txt", 'rb') as f:
    data = [map(str, line.split(',')) for line in f]

ただし、これはリストのリストとしてそれを読み込みます。リストは1つのリスト「高」のみであり、

e.g. [["TABITHA", "OLLIE", "JAIME", "WINIFRED"]]

したがって、リストのリストではなく、単なるリストである可能性もあります。単なるリストとして読み込む方法はありますか?学習の旅は続きます:-)

4

4 に答える 4

3

「付属のバッテリー」csv(カンマ区切り値)モジュールを使用します。名前にもかかわらず、他のセパレーター用に構成することもでき、他の多くのオプションもあります。

import csv
with open('names.txt','rb') as f:
    for line in csv.reader(f):
        print line

出力:

['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED']
于 2012-07-04T02:36:40.387 に答える
0

愚かでCSVモジュールを使用したくない場合:

sum([line.split(", ") for line in f], [])

編集:私の初期データはどうしたのですか?

>>> f
['TABITHA, OLLIE, JAIME, WINIFRED', 'Spam, Eggs, Dead Parrots']
>>> sum([line.split(", ") for line in f], [])
['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED', 'Spam', 'Eggs', 'Dead Parrots']

ファイル付き:

$ cat temp.csv
foo, bar, baz
spam, eggs, quux
$ python
>>> f = open("temp.csv")
>>> sum([line.split(", ") for line in f], [])
['foo', 'bar', 'baz\n', 'spam', 'eggs', 'quux\n']

map(str.strip, ...)(末尾の空白を削除するには、を追加します)

于 2012-07-04T02:46:06.963 に答える
0

編集

機能的な「自分でロール」するコード:

with open("names.txt", 'rb') as f:
    for line in f:
       line = line.strip()
       line = [w.replace('"','') for w in line.split(',')]
       print line

リスト を作成しますline

['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED']
于 2012-07-04T02:32:34.850 に答える
0

このようなものを読む最良の方法は、csvモジュールを使用することです。これにより、引用符で囲まれた値に表示される可能性のある埋め込みコンマが正しく処理されます。

于 2012-07-04T02:36:54.167 に答える