我正在尝试借助熊猫读取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+空格字符