1

我正在使用 Python 解析一个 csv 文件。

CSV 文件如下所示:

value1,value2,value3(a,b,c)

Python代码:

with open(file_path, 'rb') as this_file:
  reader = csv.reader(this_file, delimiter=',')
  for row in reader:
    print row

显然 CSV 阅读器将其解释为:

"value1","value2","value3(","a","b","c)"

阻止 Python 将 value2() 分解为四个值的最佳方法是什么?

谢谢。

4

2 回答 2

1

这是处理给定示例的代码:

a='value1, value2, value3(a, b, c)'
split=a.split(', ')
result=[]
for ent in split:
    if ent.find('(', 0, len(ent))!=-1:
        temp=''
        for ent2 in split[split.index(ent):]:
            if ent2.find('(', 0, len(ent))!=-1:
                temp=temp+ent2
            else:
                temp=temp+','+ent2
                split.remove(ent2)
            #May need a check whether ) has not been reached yet, in which case don't add the items.
        result.append(temp)
    else:
        result.append(ent)

如果在用括号括起来的条目之后是否存在一些“正常”条目(如注释中所示),则需要进行一些小的检查,例如

a='value1, value2, value3(a, b, c)', 'value4'

希望这可以帮助。抱歉,我想不出任何使用内置 csv 解析器的方法,因为您的文件实际上不是“正确的”csv ...

于 2013-07-29T21:56:11.190 回答
1

没有简单的方法可以在值中打破逗号。关于它有几个问题,许多人指出了这篇文章: https ://stackoverflow.com/a/769713/2620328

于 2013-07-29T21:30:46.770 回答