def csv_split() :
raw = [
'"1,2,3" , "4,5,6" , "456,789"',
'"text":"a,b,c,d", "gate":"456,789"'
]
cr = csv.reader(raw, skipinitialspace=True)
for l in cr :
print len(l), l
下面这个函数输出正确划分:CSV文件不能被Python
3 ['1,2,3 ', '4,5,6 ', '456,789']
6 ['text:"a', 'b', 'c', 'd"', 'gate:"456', '789"']
正如你所知道的,第一行是正确分成3项。 但第二行不是。我希望csv阅读器将其拆分为两个,而我们在这里有6个。我也想过正则表达式 的方法,但它假设了一些具体的引用方言。
基本上我想要的是: 只需在“”中分割字符串,该字符串不会在“”的一对 中引用。
有没有任何快速和一般的方法来做到这一点?我看到一些正则表达式的黑客,其中 假设每个领域总是引用等。我想我可以写一个小循环 ,这是非常低效,但肯定会赞赏一些更专业的建议。非常感谢!
它正确地分裂它。您的CSV数据格式错误。你认为它应该如何分裂? – 2012-07-09 01:58:08
你应该说出你真正想要的第二行,因为我无法弄清楚你要求的是什么。 – Gabe 2012-07-09 02:03:45
@加贝我认为OP期望''“文本”:“a,b,c,d”和“gate”:“456,789” - 如果我误解了,请纠正我。 – Levon 2012-07-09 02:12:49