python - 用字典条目替换字符串条目

时间:2014-07-28 11:29:04

标签: python regex templates string-formatting

我有一个字符串     '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), 但我不知道如何使用相同的密钥,因为它每次都要更换。

1 个答案:

答案 0 :(得分:4)

您可以使用str.format()开箱即用:

'MATERIAL 4 {clad-den} {clad-temp} 2'.format(**data)

这将在clad-den词典中查找clad-tempdata作为键:

>>> 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)

但是这并没有提供字符串格式化所能提供的相同的灵活性和功能。