我有一个输入文本,
input = 'I like {sushi} and {tempura}.'
并希望从中获取列表和替换的 src。
lst = ['sushi', 'tempura']
src = 'I like * and *.'
我可以在输入/输出字符串中使用任何标记来代替 {}
和 *
,例如 []
或其他东西。
最佳答案
import re
input = 'I like {sushi} and {tempura}.'
regex = re.compile(r'\{([^\}]*)\}')
lst = regex.findall(input) #['sushi','tempura']
mod_str = regex.sub('*',input) #I like * and *.
print (lst)
print (mod_str)
您还可以使用字符串格式进行替换:
mod_str = input.format(**dict((x,'*') for x in lst))
正则表达式分解(注意我使用了原始字符串 [r'...'
]):
\{
-- 查找文字 '{'[^\}]
-- 匹配任何不是文字 '}' 的内容*
-- 尽可能多次匹配。\}
-- 匹配文字 '}'
添加括号以在 re.findall
的匹配中进行分组。
正如 DSM 所指出的,另一种用于查找标记之间文本的常见习惯用法是:
r"\{(.*?)\}"
这意味着:
\{
-- 匹配文字 '{'(.*?)
-- 匹配任何东西,但不要贪心 --(不要吃下一部分 re 可以使用的东西匹配)'\}'
-- 匹配文字'}'
关于python - 提取并替换字符串中占位符之间的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13315922/