正则表达式和去括号

时间:2020-08-10 01:59:10

标签: python regex pandas dataframe

我有一个dataframe

name
(John)
(Lily)
(Eddy)
Wang
Lisa

dataframe的格式不正确,我需要删除括号。 返回的df应该是:

name
John
Lily
Eddy
Wang 
Lisa

我的代码是:

merge_df['name'] = merge_df['name'].replace('()','')

但是返回的df并没有给我我想要的结果。有谁知道如何修复这段代码?

2 个答案:

答案 0 :(得分:1)

.replace默认情况下寻找完全匹配。您可以如下所示明确指定要使用正则表达式。

merge_df['name'].replace(regex="[()]", value="")

答案 1 :(得分:1)

根据official documentreplace函数的第一个参数是要替换的字符串。 因此,some_str.replace('()','')意味着替换字符串中所有的()(找不到),因此您的replace函数返回了相同的字符串。

有三种处理方法。

  1. 使用多个替换功能。

    由于您一次只能替换一种子字符串,因此我们可以使用它两次以实现我们的目的。

    your_str = your_str.replace('(','').replace(')','')
    
  2. 使用正则表达式库re.sub()

    re.sub()doc)函数的功能要强大得多,它可以指定一次调用中要替换的不同子字符串。

    对我来说,我更喜欢这种解决方案,因为它更加灵活和强大。

    import re
    your_str = re.sub(r'[\)\(]', '', your_str)
    
  3. 使用str.strip()doc

    str.strip()函数将仅删除字符串末尾的字符,并且您还可以指定要删除的多个字符。 因此,在这种情况下,它很有用。

    your_str = your_str.strip('()')