Python3 使用带有正则表达式的 Dict 替换字符串

鱿鱼

我有一个输入字段,用户可以在其中插入包含在 * 中的变量,然后我使用正则表达式来获取变量,我试图在字典中查找它们,然后在输入字符串中替换它们。在下面的代码中,我设法编写了获取变量然后匹配它并创建一个包含值的列表的正则表达式,但我不确定如何使用它来替换字符串中的内容。

variables = {
    '*FFullName*': 'Raz Smith',
    '*FFirstName*': 'Raz',
    '*FSurname*': 'Smith',
    '*Subject*': 'hello',
    '*Day*': '27',
}

input = '*Day* *Subject* to *FFirstName* *FSurname*'

#get all the *variables* and add to list
var_input = re.findall('(\*.*?\*)', input)

#match above list with dict
match = list(map(variables.__getitem__, var_input))

#how to replace these in input?

#expected outcome: input = '27 Hello to Raz Smith'

我通过使用在此处找到的以下代码接近,但是,当输入字段中的变量没有空格时,它不匹配。

#example of input not working correctly

input = '*Day**Subject*to*FFirstName**FSurname*'

pattern = re.compile(r'(?<!\*)(' + '|'.join(re.escape(key) for key in variables.keys()) + r')(?!\*)')
result = pattern.sub(lambda x: variables[x.group()], input)

维克多·斯特里比尤夫

您可以使用

import re
 
variables = {
    '*FFullName*': 'Raz Smith',
    '*FFirstName*': 'Raz',
    '*FSurname*': 'Smith',
    '*Subject*': 'hello',
    '*Day*': '27',
}
 
text = '*Day* *Subject* to *FFirstName* *FSurname*'
var_input = re.sub(r'\*[^*]*\*', lambda x: variables.get(x.group(), x.group()), text)
print(var_input)
# => 27 hello to Raz Smith

查看Python 演示

你不需要捕获整个比赛,这就是为什么()现在从图形中删除。

\*[^*]*\*模式匹配 a *,然后匹配零个或多个除*a之外的字符*

整个匹配re.sub通过 lambda 表达式传递给替换参数,并variables.get(x.group(), x.group())variables字典中获取相应的值,或者如果没有匹配值作为键的项目,则将匹配放回原处。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用正则表达式替换带有python中字符串列表的字符串

如何通过Python在属性文件中使用带有正则表达式字符串的正则表达式模式进行搜索

带有特殊字符python的正则表达式负前瞻字符串

使用正则表达式解析字符串python3

python中带有正则表达式比较的字符串在python中失败

正则表达式带有3个子字符串

带有字符串标记化的Python正则表达式

带有Unicode字符串的Python正则表达式不起作用

在python中查找带有正则表达式的字符串

正则表达式到FindAll字符串链,直到带有python的点

带有Unicode字符串的Python正则表达式

使用正则表达式替换部分字符串的函数(python 3.7)

通过使用正则表达式python匹配来替换字符串

如何使用Python更改正则表达式中的替换字符串?

如何使用正则表达式替换python词典中的字符串

在python中使用正则表达式替换子字符串

Python Pandas:使用正则表达式用超链接替换字符串

如何在python中使用正则表达式替换字符串的多个单词?

如何正则表达式仅使用python替换子字符串内的空格?

使用正则表达式替换python中的子字符串

使用正则表达式 PYTHON 替换文件中的特定字符串

使用正则表达式在 python 中搜索和替换字符串模式

在Python中使用正则表达式替换模式的字符串

如何在Python中使用正则表达式替换字符串

Python字符串替换为正则表达式替换变量

如何在python中使用正则表达式用正则表达式模式替换子字符串?

python3中的正则表达式子字符串

Python3中的原始字符串,正则表达式

Python3正则表达式字符串格式