0

次のようにフォーマットされた1行のデータを含むファイルがあるとします。

"THESE","ARE","WORDS","AND","I","NEED","THEM","IN","A","LIST"

(もちろん、実際にはファイルははるかに大きくなります。)

このデータを取得してリストに読み込む簡単で短い方法はありますか?

["THESE", "ARE", "WORDS", "AND", "I", "NEED", "THEM", "IN", "A", "LIST"]

...?

ファイル内のすべての文字を繰り返し処理して、それが何を意味し、どこに属するかを理解することは確かに可能ですが、それは苛立たしいことであり、もっと簡単に行う方法があると確信しています。方法がわからない。

前もって感謝します!

4

5 に答える 5

3
import StringIO
import csv

s = '"THESE","ARE","WORDS","AND","I","NEED","THEM","IN","A","LIST"'
result = csv.reader(StringIO.StringIO(s)).next()

戻り値

['THESE', 'ARE', 'WORDS', 'AND', 'I', 'NEED', 'THEM', 'IN', 'A', 'LIST']
于 2012-07-13T22:02:07.087 に答える
2

後処理を少しでもかまわないのなら...

>>> ast.literal_eval('"THESE","ARE","WORDS","AND","I","NEED","THEM","IN","A","LIST"')
('THESE', 'ARE', 'WORDS', 'AND', 'I', 'NEED', 'THEM', 'IN', 'A', 'LIST')
于 2012-07-13T21:58:51.397 に答える
2

分割してストリップ

a='"THESE","ARE","WORDS","AND","I","NEED","THEM","IN","A","LIST"'
[i.strip('"') for i in a.split(",")]
['THESE', 'ARE', 'WORDS', 'AND', 'I', 'NEED', 'THEM', 'IN', 'A', 'LIST']

'と"の間に意味上の違いはないことに注意してください。

更新: @IgnacioVazquezによる回答をサポートします-次のようなケースを受け入れる必要がある状況では、Abrams:

a=r""""And",'b',"W,B'" """  
ast.literal_eval(a)    # gives the expected and correct
('And', 'b', "W,B'")

私が提案したスプリット/ストリップソリューションは

['And', "'b'", 'W', 'B\'" ']
于 2012-07-13T22:05:04.283 に答える
1

なぜ「分割」しないのですか?

>>> '"THESE","ARE","WORDS","AND","I","NEED","THEM","IN","A","LIST"'.split(',')
['"THESE"', '"ARE"', '"WORDS"', '"AND"', '"I"', '"NEED"', '"THEM"', '"IN"', '"A"', '"LIST"']

また

>>> [s.strip('"') for s in '"THESE","ARE","WORDS","AND","I","NEED","THEM","IN","A","LIST"'.split(',')]
['THESE', 'ARE', 'WORDS', 'AND', 'I', 'NEED', 'THEM', 'IN', 'A', 'LIST']

また

>>> map(lambda s: s.strip('"'), '"THESE","ARE","WORDS","AND","I","NEED","THEM","IN","A","LIST"'.split(','))
['THESE', 'ARE', 'WORDS', 'AND', 'I', 'NEED', 'THEM', 'IN', 'A', 'LIST']
于 2012-07-13T22:00:52.237 に答える
1

ハックかもしれませんが、JSONに似ています

import json
print json.parse('[' + your_line_here + ']')
于 2012-07-13T22:03:01.127 に答える