熊猫以负面前瞻作为分隔符读取csv

时间:2018-01-09 11:03:33

标签: python regex pandas

我试图在pandas的帮助下读取csv文件。

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

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

  1. 10
  2. 5
  3. 1
  4. [12,5]
  5. [14,7]
  6. 我知道你可以使用正则表达式进行分隔符,我试图在负向前瞻的帮助下解决我的问题。例如:[,](?!(.+)?\])目的是寻找一个没有后跟“]”的逗号。

    但是上面的正则表达式不起作用!这个表达方式有什么问题?或者是否有更简单的方法来分隔列?

    谢谢!

1 个答案:

答案 0 :(得分:1)

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

使用

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

请参阅regex demo

<强>详情

  • \s* - 0+空白字符
  • , - 一个,字符(无需将其放入字符类)
  • (?![^][]*]) - 如果在当前位置的右侧,以下模式匹配,则匹配失败的否定前瞻:
    • [^][]* - ][以外的任何0 +字符
    • ] - ]字符
  • \s* - 0+空白字符