Python 比较并替换字符串中的项

Python 比较并替换字符串中的项,python,dictionary,replace,Python,Dictionary,Replace,我正在寻求帮助解决一个让我难堪的问题。我有几行像这样的 line = '{2}*{3}^2' factorseq_dict = [('2', 'NAME1'), ('3', 'NAME2')] 花括号中的数字在字典中有一个映射,字典看起来像这样 line = '{2}*{3}^2' factorseq_dict = [('2', 'NAME1'), ('3', 'NAME2')] 我要找的是一个脚本,它将读取行中的每个键(括号中的数字),并在字典中查找相应的值。然后,该值将用于创建新的m

我正在寻求帮助解决一个让我难堪的问题。我有几行像这样的

line = '{2}*{3}^2'
factorseq_dict = [('2', 'NAME1'), ('3', 'NAME2')]
花括号中的数字在字典中有一个映射,字典看起来像这样

line = '{2}*{3}^2'
factorseq_dict = [('2', 'NAME1'), ('3', 'NAME2')]
我要找的是一个脚本,它将读取行中的每个键(括号中的数字),并在字典中查找相应的值。然后,该值将用于创建新的mylist,同时保持原始行中的所有其他内容不变。所以我的新内容将换行为换行,如下所示

line = '{2}*{3}^2'
newline = '{NAME1}*{NAME2}^2'
我已经创建了字典,但是在剩下的逻辑中,我真的很费劲,因为我无法将花括号中的项目与正常数字分开,所以很抱歉,我不能提供任何代码示例

我最接近的方法就是拿到我的东西,但在那之后我就被难倒了

line='{2}*{3}^2'
elements = re.split('({[^}]*})', line)

谢谢

您可以在
re.sub
函数的替换部分内传递匿名函数

>>> import re
>>> line = '{2}*{3}^2'
>>> factorseq_dict = [('2', 'NAME1'), ('3', 'NAME2')]
>>> dict_ = dict(factorseq_dict)
>>> re.sub(r'\{(\d+)\}', lambda m: '{' + dict_[m.group(1)] + '}', line)
'{NAME1}*{NAME2}^2'
本例中re.sub函数的一点说明-

dict_ = {'3': 'NAME2', '2': 'NAME1'}
模式r{(\d+})将提取“2”或“3”,并传递给lambda和 此匹配对象将充当字典键,从 dictionary dict_uu例如dict_u['2']返回'NAME1'(添加大括号返回{NAME1}等),将在字符串中使用以替换{2}或{3}。毕竟我们得到了'{NAME1}*{NAME2}^2'


谢谢阿维纳什。工作是一种享受。