我有一个清单
fruits = ['apple', 'banana', 'cherry']
我喜欢用列表中的所有索引替换所有这些元素。我知道,我可以浏览列表并使用替换字符串之类的
text = "I like to eat apple, but banana are fine too."
for i, fruit in enumerate(fruits):
text = text.replace(fruit, str(i))
使用正则表达式如何?使用\number
,我们可以反向引用一个匹配项。但是
import re
text = "I like to eat apple, but banana are fine too."
text = re.sub('apple|banana|cherry', fruits.index('\1'), text)
不起作用。我收到一个错误,提示\x01
没有结果。但是\1
应该引用'apple'
。
我对最有效的替换方法感兴趣,但是我也想更好地了解正则表达式。如何从正则表达式中的反向引用获取匹配字符串。
非常感谢。
答案 0 :(得分:2)
使用正则表达式。
例如:
import re
text = "I like to eat apple, but banana are fine too."
fruits = ['apple', 'banana', 'cherry']
pattern = re.compile("|".join(fruits))
text = pattern.sub(lambda x: str(fruits.index(x.group())), text)
print(text)
输出:
I like to eat 0, but 1 are fine too.