我有一个字符串
'MATERIAL 4 {clad-den} {clad-temp} 2'
,
我想替换像这样的条目
{clad-den}
,{clad-temp}
(在图括号中)与字典中的相应值,具有相同的键,括在括号中 - 如
data['clad-den']
接收如下字符串:
'MATERIAL 4 6.55 578.0 2'
。
我怎么能这样做?
我有一些针对re.sub
的想法。就像是:
re.sub(('{\S+}'),data[('\S+')],string)
,
但我不知道如何使用相同的密钥,因为它每次都要更换。
答案 0 :(得分:4)
您可以使用str.format()
开箱即用:
'MATERIAL 4 {clad-den} {clad-temp} 2'.format(**data)
这将在clad-den
词典中查找clad-temp
和data
作为键:
>>> data = {'clad-den': 6.55, 'clad-temp': 578.0}
>>> 'MATERIAL 4 {clad-den} {clad-temp} 2'.format(**data)
'MATERIAL 4 6.55 578.0 2'
您也可以使用re.sub()
,使用替换参数的函数:
re.sub(r'{([^{}]+)}', lambda m: str(data[m.group(1)]), template_text)
但是这并没有提供字符串格式化所能提供的相同的灵活性和功能。