我正在尝试替换字符串中的文本。首先,我必须使用findall()来收集多个不同的事件,然后必须将它们全部替换为一个特定的字符串。
问题出在这里
这是我的代码:
import re
search_string = '''This is a string to search for a regular expression
like regular expression or regular-expression or regular:expression or
regular&expression'''
pattern = re.findall('regular.expression', search_string)
substitution = 'regular expression'
replace_results = re.sub('regular.expression', 'regular expression',
search_string)
print(replace_results)
所以我知道find all作为结果返回一个列表,这导致TypeError:无法散列的类型:'list'。我可以使用sub与“ regular.expression”代替,但这并不能真正解决问题。正确的方法是什么?
答案 0 :(得分:1)
该问题根本不要求您使用re.findall
。您应该使用re.sub
搜索模式,并将匹配项替换为substitution
:
import re
search_string = 'This is a string to search for a regular expression like regular expression or regular-expression or regular:expression or regular&expression'
pattern = 'regular[ -:^]expression'
substitution = 'substitution'
replace_result = re.sub(pattern, substitution, search_string)
print(replace_result)
这将输出:
This is a string to search for a substitution like substitution or substitution or substitution or substitution
答案 1 :(得分:0)
<a:lstStyle>
<a:lvl1pPr>