我正在尝试借助熊猫读取csv文件。

该文件包含如下行:
10,5,1,[12,5],[14,7]

上例中的csv文件应包含5个列


10
5
1个
[12,5]
[14,7]


我知道您可以将正则表达式用于分隔符,并且我尝试通过负前瞻来解决我的问题。例如:[,](?!(.+)?\])目的是寻找逗号后没有“]”。

但是上面的正则表达式不起作用!表达式有什么问题?还是有一种更简单的方法来分离列?

谢谢!

最佳答案

请注意,您的正则表达式包含(?!(.+)?\])否定的前瞻,即使在][之后有],也会返回true,因为.可以匹配这些括号。您需要确保在][以外的其他字符之后没有]。另外,要删除,周围的空格,您需要在其周围添加\s*

使用

\s*,(?![^][]*])\s*


请参见regex demo

细节


\s*-0+空格字符
,-一个,字符(无需将其放入字符类中)
(?![^][]*])-如果在当前位置的右边立即匹配以下模式,则匹配失败的否定超前行为:


[^][]*-除][之外的任何0+个字符
]-一个]字符

\s*-0+空格字符

09-25 19:34