从字符串中删除列表中定义的任何模式(word或regex)

2024-03-29 07:40:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张单子

forbidden_patterns=['Word1','Word2','Word3','\d{4}']

和一个字符串:

string1="This is Word1 a list thatWord2 I'd like to 2016 be readableWord3"

怎样删除string1中定义的所有模式和单词,使其以以下结尾:

clean_string="This is a list that I'd like to be readable"

\d{4}是为了去除年份模式,在这种情况下,年份模式是2016

我们非常欢迎


Tags: tois模式bethislistlikepatterns
2条回答
import re

new_string = string1
for word in forbidden_words:
    new_string = re.sub(word, '', new_string)

你的new_string就是你想要的。不过,它有点长,删除一些单词后会留下2个空格,如This is a list that I'd like to be readable

给你:

import re

forbidden_patterns = ['Word1', 'Word2', 'Word3', '\d{4}']

string = "This is Word1 a list thatWord2 I'd like to 2016 be readableWord3"

for pattern in forbidden_patterns:
    string = ''.join(re.split(pattern, string))

print(string)

本质上,这段代码遍历forbidden_patterns中的每个模式,将string使用该特定模式作为分隔符(这将从字符串中删除分隔符,在本例中是模式),并将其重新连接到下一个模式的字符串中。你知道吗

编辑

要除去多余的空格,请将以下行作为for循环的第一行:

string = ''.join(re.split(r'\b{} '.format(pattern), string))

这行检查模式是否是一个完整的单词,如果是,则删除该单词和其中一个空格。确保此行位于string = ''.join(re.split(pattern, string))之上,这比此行“更不具体”。你知道吗

相关问题 更多 >