2011-11-09 11 views
29

私は、次のようないくつかの入力を持っている:文字列をコンマで区切りますが、二重引用符で囲まれたコンマは無視しますか?

A,B,C,"D12121",E,F,G,H,"I9,I8",J,K 

カンマ区切り値は、任意の順序にすることができます。文字列をコンマで区切りたい。ただし、何かが二重引用符で囲まれている場合は、カンマを無視して引用符を取り除く(可能であれば)必要があります。だから、基本的には、出力は文字列のリストのようになります。

['A', 'B', 'C', 'D12121', 'E', 'F', 'G', 'H', 'I9,I8', 'J', 'K'] 

私はいくつかの他の回答を見て持っていた、と私は正規表現が最善だろうと思っていますが、私は来る時にひどいですよそれらと一緒に。

+10

Pythonで[csv](http://docs.python.org/library/csv.html)モジュールを使用したことはありますか? –

答えて

44

Lasseが正しくあります。コンマ区切りの値ファイルなので、csv moduleを使用してください。簡単な例:

from csv import reader 

# test 
infile = ['A,B,C,"D12121",E,F,G,H,"I9,I8",J,K'] 
# real is probably like 
# infile = open('filename', 'r') 
# or use 'with open(...) as infile:' and indent the rest 

for line in reader(infile): 
    print line 
# for the test input, prints 
# ['A', 'B', 'C', 'D12121', 'E', 'F', 'G', 'H', 'I9,I8', 'J', 'K'] 
+0

これは質問に答えているのか分かりません。 OPは何を求めているのでしょうか?ここで「リーダー」が使われているのはどこですか? – heltonbiker

+1

@heltonbikerはい、目的の出力が得られます。私の答えの最後の行を見たり、コードを自分で実行してテストしてください。 'csv.reader'は' for'行で使用されています - 入力iterableから行を読み込み、それをセルのリストに変換します。 – agf

+0

うん、ちょうど答えが不完全に見えた。気をつけてくれてありがとう。 – heltonbiker

関連する問題