web-dev-qa-db-ja.com

文字列をコンマで分割しますが、二重引用符内のコンマを無視しますか?

次のような入力があります。

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

コンマ区切りの値は任意の順序で指定できます。文字列をコンマで分割したいと思います。ただし、二重引用符の内側に何かがある場合は、コンマを無視し、可能であれば引用符を削除する必要があります。基本的に、出力は次の文字列のリストになります。

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

私は他のいくつかの答えを見ましたが、正規表現が最善だと思っていますが、それらを思い付くのは恐ろしいです。

40

ラッセは正しい。カンマ区切りの値ファイルなので、 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']
58
agf