gpt4 book ai didi

python - 用字典中的相应值替换字符串中的键

转载 作者:太空宇宙 更新时间:2023-11-04 02:29:31 24 4
gpt4 key购买 nike

我有一个字典,它的键看起来像这样:

['NAME', 'ID', 'COURSE', 'DUE', 'SUBMITTED', 'MINUTESLATE', 'LATEDEDUCTION', 'P1', 'P1COMMENTS', 'P2', 'P2COMMENTS', 'SUBTOTAL', 'TOTAL']

我的目标是遍历一个文件并将出现的这些键替换为我从另一个文件中读入的值。例如:

Problem 1: <<P1>>/35 <<P1COMMENTS>>

将被替换为类似的东西:

Problem 1: 30/35 comment

但是,我在执行此操作时遇到了问题,因为键可能会重叠。我使用之前为另一个作业查找的一些代码编写了此方法:

def replace_all(text, dic):
for i, j in dic.items():
text = text.replace(i, j)
return text

但是,这是我的字典中第一次出现重叠键,因此我很难调整此方法以使其正常工作。目前,这是我的输出:

Problem 1: 30/35 30COMMENTS

关于解决此问题的更好方法的任何想法?

最佳答案

你可以使用 re.sub()找到每个 << key >>然后将其替换为字典中的相应值。

import re

dct = {
'P1': 30,
'P1COMMENTS': 'comment'
}

print(dct)

s = 'Problem 1: <<P1>>/35 <<P1COMMENTS>>'
s = re.sub(r'<<(.*?)>>', lambda x: str(dct[x.group(1)]), s)
print(s)

输出:

Problem 1: 30/35 comment

解释:

<<(.*?)>> :

<<                // matches <<
( // start of group 1
.*? // matches any number (0 or more) of characters (lazy)
) // end of group 1
>> // matches >>

re.sub() 将采用一个模式、一个替换值和一个字符串,并将替换字符串中的任何模式匹配,替换值。函数:

lambda x: str(dct[x.group(1)])

将在字典中查找匹配项,并返回键的值。

关于python - 用字典中的相应值替换字符串中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49541029/

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