gpt4 book ai didi

python - 如何使用正则表达式删除字符串中的数字,主题标签中的数字除外

转载 作者:行者123 更新时间:2023-11-28 16:57:18 28 4
gpt4 key购买 nike

我正在处理一些 Twitter 文本,我想删除一条推文中的所有数字,但出现在主题标签中的数字除外。例如,

'I wrote 16 scripts in #code100day challenge2019 in 10day' 

应该变成

'I wrote scripts in #code100day challenge in day'

请注意,不与字母字符分开的数字也应删除(即 'challenge2019' --> 'challenge', '10day' --> 'day').

我试过:

text = 'I wrote 16 scripts in #code100day challenge2019 in 10day'
text = re.sub(r"^(?!#)\d+", "", text)

但它不会对输入字符串做任何事情。

我还进行了负向回顾,试图删除除 '#' 符号之后的所有数字:

text = re.sub(r"(?<!#)\d+", "", text)

但现在它会删除所有数字字符,无论是否在主题标签中:

'I wrote  scripts in #codeday challenge in day'

有什么建议吗?

最佳答案

一个选项是匹配 # 后跟非空格字符(并且,如果匹配,替换为整个匹配项,有效地保留主题标签),匹配数字字符并删除它们:

output = re.sub(
r'#\S+|\d+',
lambda match: match.group(0) if match.group(0).startswith('#') else '',
txt
)

如果您可以使用正则表达式模块,则可以在匹配主题标签后使用 (*SKIP)(*FAIL) 来代替,以在匹配时有效地跳过它们:

output = regex.sub(r'#\S+(*SKIP)(*FAIL)|\d+', '', txt)

关于python - 如何使用正则表达式删除字符串中的数字,主题标签中的数字除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57174831/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com