2013-02-21 14 views
5

私はいくつかの検索をしましたが、ほとんどの答えは完全なcsvファイルを読むことに関するものであり、これらのどれも私が直面している問題のようなものではありません。Python - csvのような行を読み込み/解析する方法は?

私はネット使用urllib2のからファイルを読み込むしようとしています:

request = urllib2.Request('http://.../tv.txt') 
response = urllib2.urlopen(request) 
lines = response.readlines() 
for line in lines: 
    ... 

「ライン」のフォーマットはこれらのようになります。

"ABC", "XYZ,MNO", "KLM" 
"ABC", "MN" 
"ABC", "123", "10", "OPPA GANGNAM STYLE", "LADY" 

上で見たように、これらの行は、実際にCSVではありませんライン。列の数は変化し続ける。

各行をリストに分割する方法はありますか?欲望の結果は次のようになります。

["ABC", "XYZ,MNO", "KLM"] 
["ABC", "MN"] 
["ABC", "123", "10", "OPPA GANGNAM STYLE", "LADY"] 

私はline.splitを(「」)を使用してみましたが、二重引用符の各ペア内のカンマがあるので、それは正確に分割することができません。

ご存知の方はお手伝いをしてください。どうもありがとうございました。

乾杯、

PHP-のPythonのJava-のMySQL - 初心者。

答えて

8

csvモジュールを使用して、必要な処理を行います。

yourstring= '"ABC", "XYZ,MNO", "KLM"\n"ABC", "MN"\n"ABC", "123", "10", "OPPA GANGNAM STYLE", "LADY"' 

import csv 
import StringIO 

class MyDialect(csv.Dialect): 
    strict = True 
    skipinitialspace = True 
    quoting = csv.QUOTE_ALL 
    delimiter = ',' 
    quotechar = '"' 
    lineterminator = '\n' 


b=StringIO.StringIO(yourstring) 
r=csv.reader(b,MyDialect()) 

for i in r: 
    print len(i), ':',' @ '.join(i) 
+1

質問で述べたように、私はcsv moduleを試しました。あなたがcsvモジュールでどのような機能を指すことができるなら、それはすばらしいでしょう。このあたり はなく、何の成功 – markbse

+0

が明確ことではありませんhttp://docs.python.org/2/library/csv.html#examples 印刷行:私はcsv.reader内の行([ライン])のための を試してみました今は十分? – LtWorf

+0

ありがとうございます。待っている間に、ソースをCSV形式からJSON形式に変更しましたので、スクリプトをテストしませんでしたが、これを答えとしてマークします。 – markbse

関連する問題