我有以下字符串和列表“changewords”。我想用{word from list}替换{word from list}\n:'我不想替换'\n'的所有实例
string = "Foo \n value of something \n Bar \n Another value \n"
changewords = ["Foo", "Bar"]
期望输出:
'Foo: value of something \n Bar: Another value \n'
我试过以下方法
for i in changewords:
tem = re.sub(f'{i} \n', f'{i}:', string)
tem
Output: 'Foo \n value of something \n Bar: Another value \n'
及
changewords2 = '|'.join(changewords)
tem = re.sub(f'{changewords2} \n', f'{changewords2}:', string)
tem
Output: 'Foo|Bar: \n value of something \n Foo|Bar: Another value \n'
如何获得所需的输出
您完全可以不使用正则表达式,我的第一种方法是使用内置字符串函数
.replace()
,使其看起来像:希望有帮助
使用替换字符串:
一种稍微优雅一点的方式。这一班轮:
演示:
您可以使用
flags
选项指定不区分大小写的匹配。可以修改替换字符串,使其具有\1
左右所需的任何内容,如冒号或逗号值得注意的是,在Python中,可以在字符串上放置多个说明符。例如,您可以同时使用
r
和f
,比如rf"my raw formatted string"
-说明符的顺序并不重要在
re.sub(expr, repl, string)
中的表达式中,可以指定组。分组是通过在文本周围放置括号()
来完成的然后,可以使用反斜杠及其出现次数在替换字符串
repl
中引用组-第一个组由\1
引用函数
re.sub()
将替换字符串中的\1
与表达式参数中的第一个组(A|B|C)
相关联使用替换功能:
假设要用字典中的其他单词替换目标字符串中的单词。例如,您希望将“Bar”替换为“Hank”,将“Foo”替换为“Bernard”。这可以使用替换函数而不是替换字符串来完成:
这可能是另一个一行,但为了清楚起见我把它拆开了
lambda函数的作用是获取传递给它的匹配对象
mo
,然后提取第一个组的文本。reg表达式中的第一个组是由()
包围的文本,类似于(A|B|C)
替换函数使用
mo.group(1)
引用第一个组;类似地,在上一个示例中,替换字符串通过\1
引用它然后repl函数在dict中进行查找,并返回匹配的最终替换字符串
您可以使用以下代码:
输出:
注意
tem = string
初始化tem
值,然后在for
循环中使用re.sub
ontem
并将返回结果赋给tem
本身(?i)
用于忽略大小写匹配Code Demo
相关问题 更多 >
编程相关推荐