Transform comma separated string into a list but ignore comma in quotes
如何将
这是期望的结果:
1 | re.compile(r'''((?:[^,"']|"[^"]*"|'[^']*')+)''') |
但这给了我这个输出:
1 | ['', '1', ',,',"2'3,4'", ''] |
我不明白这些多余的空字符串来自何处,以及为什么这两个逗号甚至被打印出来,更不用说一起了。
我试着自己做这个regex:
1 | re.compile(r'''(, |"[^"]*" | '[^']*')''') |
结果没有发现任何东西,只是返回了我的原始列表。
我不明白为什么,它至少应该检测到逗号吗?如果在逗号后加一个
与其使用正则表达式,不如使用
1 2 3 4 5 6 7 | from cStringIO import StringIO from csv import reader file_like_object = StringIO("1,,2,'3,4'") csv_reader = reader(file_like_object, quotechar="'") for row in csv_reader: print row |
这将产生以下输出:
1 | ['1', '', '2', '3,4'] |
pyparsing包含一个用于逗号分隔列表的预定义表达式:
1 2 3 4 | >>> from pyparsing import commaSeparatedList >>> s ="1,,2'3,4'" >>> print commaSeparatedList.parseString(s).asList() ['1', '',"2'3","4'"] |
嗯,看起来你的数据有错别字,2后面缺少逗号:
1 2 3 | >>> s ="1,,2,'3,4'" >>> print commaSeparatedList.parseString(s).asList() ['1', '', '2',"'3,4'"] |