在文本python堆中替换多个字符串

时间:2015-01-30 05:52:13

标签: python

如果我有文本appleorangepearbanana,我想用x替换苹果香蕉和梨的每个实例,并用y替换每个橙色实例。理想情况下,我会有一个苹果,橙子和香蕉的字典,对于这个字典的任何实例,它将被替换为x。我对python很新,所以任何帮助都会受到赞赏:)

初始文本:appleorangepearbanana 最终文本:xyxx

2 个答案:

答案 0 :(得分:2)

用函数str.replace('x','y')

可以很容易地解决这个问题
foo = 'appleorangepearbanana '
foo = foo.replace('apple', 'x').replace('banana', 'x').replace('pear', 'x').replace('orange','y')
print foo

使用字典和循环:

foo = 'appleorangepearbanana '
dict = {'apple':'x','pear':'x','banana':'x','orange':'y'}
for original,replacewith in dict.items():
    foo = foo.replace(original, replacewith)
print foo

答案 1 :(得分:0)

正则表达式可能在这里运作良好:

import re

thedict = dict.fromkeys('apple pear banana'.split(), 'x')
thedict['orange'] = 'y'

theregex = '|'.join(thedict)

def dosub(mo):
    return thedict.get(mo.group(0), '???')

result = re.sub(theregex, dosub, 'appleorangepearbanana')

将根据需要生成'xyxx'