Python替换字符串中的多个子字符串
我有一条文字:“{name} 喜欢 {post}”。我根据 {} 中的值从 db 中获取数据。然后我得到一个数组中的值,比如 ["John", "515335"] 一个数据。
我不知道我会在字符串中得到多少个变量。也会是 1 或 3。(但要替换的内容数量和值将相同)
那么替换此字符串中的值的最佳方法是什么?
我试过:
for i in range(len(subContentArr)):
content = re.sub(subContentArr[i], valuesArr[i], content, flags=re.IGNORECASE)
但我明白了local variable 'content' referenced before assignment。(内容是我用花括号得到的文本)
预期输出:“约翰喜欢 515335”
回答
如果a和b是您的数据库输入,您可以d像这样创建您想要的输出:
import re
a = "{name} likes {post}"
b = ['John', '515335']
c = re.sub(r'{[^}]+}', '{}', a)
d = c.format(*b)
基本上c将是输入字符串的修改版本,它将简化占位符,{}然后我们可以使用它.format()以相同的顺序用值替换占位符。