gpt4 book ai didi

python - 比较和替换字符串中的项目

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:35 25 4
gpt4 key购买 nike

我正在为一个让我难过的问题寻求帮助。我有几行看起来像这样

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'}

pattern r'{(\d+)}' will extract '2' or '3' and pass to lambda and this match object will act as dictionary key to return value from the dictionary dict_ e.g. dict_['2'] returns 'NAME1' (added braces returns {NAME1} etc) that will be used in the line string to replace {2} or {3}. After all we get '{NAME1}*{NAME2}^2'

关于python - 比较和替换字符串中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33451287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com