用replace字典replacestring的最简单的方法是什么?
考虑..
dict = { 'Спорт':'Досуг', 'russianA':'englishA' } s = 'Спорт russianA'
我想用s
各自的dict值replace所有的dict键。
使用re:
import re s = 'Спорт not russianA' d = { 'Спорт':'Досуг', 'russianA':'englishA' } pattern = re.compile(r'\b(' + '|'.join(d.keys()) + r')\b') result = pattern.sub(lambda x: d[x.group()], s) # Output: 'Досуг not englishA'
这只会匹配整个单词。 如果你不需要,使用模式:
pattern = re.compile('|'.join(d.keys()))
请注意,在这种情况下,如果某些字典条目是其他string的子string,则应按字母顺序sorting。
你可以使用reduce函数:
reduce(lambda x, y: x.replace(y, dict[y]), dict, s)
在这里find解决scheme(我喜欢它的简单性):
def multipleReplace(text, wordDict): for key in wordDict: text = text.replace(key, wordDict[key]) return text
一种方式,没有重新
d = { 'Спорт':'Досуг', 'russianA':'englishA' } s = 'Спорт russianA'.split() for n,i in enumerate(s): if i in d: s[n]=d[i] print ' '.join(s)
几乎和ghostdog74一样,虽然是独立创build的。 一个区别是,使用d.get()而不是d []可以处理不在字典中的项目。
>>> d = {'a':'b', 'c':'d'} >>> s = "acx" >>> foo = s.split() >>> ret = [] >>> for item in foo: ... ret.append(d.get(item,item)) # Try to get from dict, otherwise keep value ... >>> " ".join(ret) 'bdx'
我在类似的情况下使用这个(我的string都是大写的):
def translate(string, wdict): for key in wdict: string = string.replace(key, wdict[key].lower()) return string.upper()
希望能以某种方式帮助… 🙂