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

Python 如何对findall()函数返回的列表运行sub()函数?,python,Python,我正在尝试替换字符串中的文本。首先我必须使用findall()收集几个不同的事件,然后我必须用一个特定的字符串替换它们 问题是: 编写一个正则表达式,用于查找以下所有情况: A.正则表达式 B正则表达式 C正则表达式 D正则表达式 搜索字符串 将正则表达式赋给名为pattern的变量 使用重新包中的sub()方法将所有出现的“pattern”替换为“substitution” 将sub()方法的结果赋给名为replace_result的变量 输出到控制台replace_结果 这是我的密码: im

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

问题是:

  • 编写一个正则表达式,用于查找以下所有情况: A.正则表达式 B正则表达式 C正则表达式 D正则表达式 搜索字符串
  • 将正则表达式赋给名为pattern的变量
  • 使用重新包中的sub()方法将所有出现的“pattern”替换为“substitution”
  • 将sub()方法的结果赋给名为replace_result的变量
  • 输出到控制台replace_结果
  • 这是我的密码:

    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)
    

    所以我知道findall结果返回一个列表,这导致TypeError:unhabable type:'list'。我可以将sub与“regular.expression”一起使用,但这并不能真正解决问题。正确的方法是什么?

    问题根本不要求您使用
    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
    
    重新导入
    #搜索正则表达式出现的字符串(提供给学员)
    search_string=''这是一个用于搜索正则表达式(如正则表达式或正则表达式)的字符串
    正则表达式或正则表达式:表达式或正则表达式(&R)“”
    #1.编写一个正则表达式,用于查找以下所有情况:
    #a。正则表达式
    #b。正则表达式
    #c。正则表达式
    #d。正则表达式
    #搜索字符串
    text=re.compile(r'regular.\w+'))
    ##2.  将正则表达式赋给名为pattern的变量
    模式=文本
    #用于替换的字符串(提供给学生)
    替换=“正则表达式”
    #3.使用重新包中的sub()方法将所有出现的“pattern”替换为“substitution”
    result=re.sub(模式、替换、搜索字符串)
    #4.将sub()方法的结果赋给名为replace_result的变量
    替换结果=结果
    #5.输出到控制台的替换结果
    
    打印(replace_result)
    一个循环,遍历
    findall
    中的所有匹配项?我不完全确定您在问什么,但请注意
    re.sub
    的替换参数可以调用-请参阅。