python - 파이썬 - 교체 사전을 사용하여 문자열을 대체하는 가장 쉬운 방법은 무엇입니까?




파이썬 특정 문자열 추출 (5)

나는 비슷한 상황에서 이것을 사용했다. (문자열은 모두 대문자이다.)

def translate(string, wdict):
    for key in wdict:
        string = string.replace(key, wdict[key].lower())
    return string.upper()

도움이되는 희망은 어떤 식 으로든 ... :)

중히 여기다..

dict = {
'Спорт':'Досуг',
'russianA':'englishA'
}

s = 'Спорт russianA'

모든 dict 키를 각각의 dict 값으로 대체하고 싶습니다.


다시 사용 :

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()))

이 경우 사전 항목 중 일부가 다른 부분 문자열 인 경우 길이에 따라 내림차순으로 단어를 정렬해야합니다.


키에 공간이 있으면 경고 메시지와 함께 ghostdog74 및 extaneons 응답과 유사한 압축 된 솔루션입니다.

d = {
'Спорт':'Досуг',
'russianA':'englishA'
}

s = 'Спорт russianA'

' '.join(d.get(i,i) for i in s.split())

편도, 다시없는

d = {
'Спорт':'Досуг',
'russianA':'englishA'
}

s = 'Спорт russianA'.split()
for n,i in enumerate(s):
    if i in d:
        s[n]=d[i]
print ' '.join(s)

reduce 함수를 사용할 reduce 있습니다.

reduce(lambda x, y: x.replace(y, dict[y]), dict, s)






regex