【问题标题】:Python replace multiple string patterns in columnPython替换列中的多个字符串模式
【发布时间】:2021-05-14 04:00:16
【问题描述】:

我有一个包含剧情简介的多部电影的数据框。

Title        Synopsis
Movie1       Old Macdonald had a farm         [Written by ABC rewrite] 
Movie2       Wheels on the bus                 (Source: Melon)
Movie3       Tayo the bus                      [Produced by Wills Garage]
Movie4       James and Giant Apple             (Source: Kismet)

我想删除 NLP 不需要的尾随词,以便我在下面得到一个数据框

Title        Synopsis
Movie1       Old Macdonald had a farm         
Movie2       Wheels on the bus                
Movie3       Tayo the bus                      
Movie4       James and Giant Apple            

我尝试了以下代码,但我的概要列以一些字符串结尾,例如“0”Iodfosomhgooad,somh...\n1GaBauadFal...” 想知道我是否可以解决这个问题,感谢任何形式的帮助,谢谢。

removelist = [('[Written by]', '') ,('(Source:)', '')]
               
for old, new in removelist:
    df['Synopsis'] = re.sub(old, new, str(df['Synopsis']))



【问题讨论】:

  • 每一行都存在那些不必要的数据吗?
  • @RishabhKumar,不一定,不需要的数据可以出现在任何一行。

标签: python regex pandas dataframe replace


【解决方案1】:

你可以使用

df['Synopsis'] = df['Synopsis'].str.replace(r'\s*(?:\[[^][]*]|\([^()]*\))\s*$', '')

请参阅regex demo

详情

  • \s* - 零个或多个空格
  • (?:\[[^][]*]|\([^()]*\)) - 要么
    • \[[^][]*] - 一个[,除[] 之外的任何零个或多个字符,然后是] 字符
    • | - 或
    • \([^()]*\) - (,除 ()) 字符之外的任何零个或多个字符
  • \s* - 零个或多个空格
  • $ - 字符串结束。

【讨论】:

    【解决方案2】:

    您可以使用直接可用于 Pandas DataFrames 中的字符串的正则表达式替换方法。

    data['Synopsis'] = data['Synopsis'].str.replace('\[.*\]$|\(.*\)$','', regex=True)
    

    匹配字符串末尾 [] 之间的任何内容

    \[.*\]$

    多个字符串模式

    |

    匹配字符串末尾 () 之间的任何内容

    \(.*\)$

    您的样本结果是:

                             Synopsis
    Title                            
    Movie1  Old Macdonald had a farm 
    Movie2         Wheels on the bus 
    Movie3              Tayo the bus 
    Movie4     James and Giant Apple 
    

    【讨论】:

    • 我投了赞成票,但不确定谁投了反对票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多