将所有列表元素与字符串匹配,并删除匹配的字符串部分

2024-09-29 03:35:15 发布

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

import re    
my_list=['apple', 'oranges' , 'peaches']
string= ' \apples\ \cherries\ \bananas\ \peaches\ \avocado\ \oranges\ '
for x in my_list:
    replace=re.sub(x,' ',string)
    print(replace)

正确的输出:-'\cherries\\bananas\\avocado\'

这个代码哪里出了问题


Tags: inimportreappleforstringmyreplace
2条回答
import re

a = ['apples', 'oranges' , 'peaches']
input_text = ' \\apples\\ \\cherries\\ \\bananas\\ \\peaches\\ \\avocado\\ \\oranges\\ '

output_text = re.sub(r'({})'.format('|'.join(['\\\\{}\\\\'.format(x) for x in a])), '', input_text)

output_text是:

  \cherries\ \bananas\  \avocado\  

您可以使用.replace(),这样可能更容易:

my_list=['apples', 'oranges' , 'peaches'] # note typo in original post
string= r' \apples\ \cherries\ \bananas\ \peaches\ \avocado\ \oranges\ '

for item in my_list:
    thestring = '\\' + item + '\\ '
    string = string.replace(thestring, '')
print(string)

输出:

 \cherries\ \bananas\ \avocado\

但是,如果在最后一个反斜杠之后有可变数量的空格,则最好使用正则表达式和搜索项末尾的' ?'

无论哪种情况,print()语句都应该在循环之外

相关问题 更多 >