【问题标题】:How to match this substring correctly to replace in Pandas如何正确匹配此子字符串以在 Pandas 中替换
【发布时间】:2020-10-13 21:02:57
【问题描述】:

我有一个包含一些数据的数据框,并且想要替换字符串“| ']”。字符串是一个空格、一个管道、另一个空格和一个括号。

     ID    Stuff
0    a1     | ']
1    b2  xyz-456

我正在尝试:

df1['Stuff'].replace(to_replace=' | \']',value='', inplace=True, regex=True)

但它只删除字符串中的空格

     ID    Stuff
0    a1      |']
1    b2  xyz-456

转义管道会导致正则表达式不再匹配,并且输出中没有任何变化(在 PyCharm 中,转义时反斜杠变为橙色,但由于某种原因它不会在管道前面突出显示橙色):

df1['Stuff'].replace(to_replace=' \| \']',value='', inplace=True, regex=True)

【问题讨论】:

  • replace 接受正则表达式。 | 有一个非常具体的正则表达式含义,所以你也想转义它。顺便说一句:如果您的字符串文字包含单引号,则可以对外部字符串使用双引号,从而无需转义单引号。
  • 我怎样才能逃离管道?我在它前面添加了“\”,现在正则表达式根本不匹配,所以输出中没有任何变化

标签: python regex pandas replace pycharm


【解决方案1】:

当您有特殊字符时使用原始字符串。

df1['Stuff']..replace(to_replace=r" | ']", value='', inplace=True)

注意事项

  1. 您没有使用正则表达式进行搜索,因此无需将其设置为 true
  2. 当字符串中有单引号时使用双引号,反之亦然。两者兼有时使用三引号

【讨论】:

  • 我认为我仍然需要保留 regex=True 因为我正在搜索的字符串是较大字符串的一部分,我只是为了简单起见没有包含它。运行提供的代码只会删除 | 之间的空格和']
【解决方案2】:

df1['Stuff'].replace(to_replace=' | ']',value='', inplace=True, regex=True)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 2016-11-28
    相关资源
    最近更新 更多