2016-03-25 23 views
0

私はそうのような多くの行を持つファイルがあります:私は二重引用符内の文字列内にカンマをスキップカンマで二行を分割するにはどうすればよい引用符で囲まれたカンマを無視して、コンマで改行する方法はありますか?

1,50,"asasd",25 
2,51,"apa,asdfi",26 
..... 
..... 

を?私がしようとしている現在

[2,51,"apa,asdfi",26] 

:として

私は2番目の行の結果を必要とする

x = line.split(',') 

結果は同様である:

['2','51','"apa','asdfi"','26'] 

答えて

0

あなたは以下のコードを試すことができます:

line = '2,51,"apa,asdfi",26' 
result = line.split(",") 

length = len(result) 
for i in range(length): 
    if '"' in result[i]: 
     result[i] += "," + result[i+1] 
     result.remove(result[i+1]) 
     break 

length = len(result) 
for i in range(length): 
    if result[i].isdigit(): 
     result[i] = int(result[i]) 

print(result) 

出力:としては.CSVとして、あなたのファイルを読み取ろうと、コメントの中で述べて

[2, 51, '"apa,asdfi"', 26] 
3

、それは文字列の中昏睡で大きなを行います。そこ あなたがそれを使用して問題がある場合は、ドキュメントを読むことができるhttps://docs.python.org/2/library/csv.htmlは、いくつかの例をorsee https://dzone.com/articles/python-101-reading-and-writing

import csv 

with open(file.csv,'r') as f: 
    spamreader = csv.reader(f,delimiter=",") 
    for row in spamreader: 
     # a row is a list containing all elements in a line 
     print row 

結果:またre.findallでそれらを抽出することができ

['1','50','"asasd"','25'] 
['2','51','"apa,asdfi"','26'] 
0

>>> s = '2,51,"apa,asdfi",26' 
>>> 
>>> re.findall(r'(\d+|".*")', s) 
['2', '51', '"apa,asdfi"', '26'] 

私はdup

に記載されている方法をお勧めしますが
関連する問題