如何在findall()函数返回的列表上运行sub()函数?

时间:2019-04-13 21:49:51

标签: python

我正在尝试替换字符串中的文本。首先,我必须使用findall()来收集多个不同的事件,然后必须将它们全部替换为一个特定的字符串。

问题出在这里

  1. 编写一个正则表达式,将查找以下所有出现的情况: 一种。正则表达式 b。正则表达式 C。正则表达式 d。正则表达式 在search_string
  2. 将正则表达式分配给名为pattern的变量
  3. 使用re包中的sub()方法将所有出现的“模式”替换为“替换”
  4. 将sub()方法的结果分配给一个名为replace_result的变量
  5. 输出到控制台replace_results

这是我的代码:

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”代替,但这并不能真正解决问题。正确的方法是什么?

2 个答案:

答案 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>