【问题标题】:What regex will remove instances of @ followed by any characters (except white space) in python? [duplicate]什么正则表达式将删除 @ 的实例,后跟 python 中的任何字符(空格除外)? [复制]
【发布时间】:2020-09-24 07:05:54
【问题描述】:

我有以下数据框:

corpus = pd.DataFrame({"tweet":["@blah Check tihs out @hay! This bear loves jumping on this plant!", 
          "I can't bear the noise from that power plant. It makes me jump."]})

...我想删除用户提及的内容,即“@blah”和“@hay”

我尝试了以下正则表达式,但这只是删除了“@”:

corpus["tweet"] = [re.sub(r'^@.*\s+$',' ', str(tweet)) for tweet in corpus["tweet"]]

我需要使用什么正则表达式来删除整个用户名而不仅仅是 @?

【问题讨论】:

  • 试试这个@\w+
  • @luigigi 为您提供了一个很好的解决方案,对于\w 未包含的更复杂的删除,请尝试lookbehind
  • 请更准确。是否要将每个以 '@' 开头并后跟一个或多个小写字母的子字符串替换为空字符串?

标签: python regex twitter


【解决方案1】:

这将删除@后跟一个或多个非空白字符。

使用\s*,它还会在之后删除空格(不是严格意义上的问题,但可能是有意的),否则@提及之前和之后的空格将在输出中最终成为双倍空格。

re.sub(r'@\S+\s*', '', str(tweet))

【讨论】:

    【解决方案2】:

    感谢 luigigi 的回答(它有效且非常简单):

    @\w+

    【讨论】:

    • 您希望匹配"@_______""@00000000"?如果您喜欢@luigigi 的建议,也许建议他发布答案。 @alaniwi 即将提出一个好观点。
    • 问题标题表示除空格以外的任何字符。 \w 可能更接近您的真正意图,但值得注意的是,它不会匹配标点符号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多