반응형
대체 사전을 사용하여 문자열을 대체하는 가장 쉬운 방법은 무엇입니까?
중히 여기다..
dict = {
'Спорт':'Досуг',
'russianA':'englishA'
}
s = 'Спорт russianA'
모든 dict 키를의 해당 dict 값으로 바꾸고 싶습니다 s
.
다시 사용 :
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()))
이 경우 사전 항목 중 일부가 다른 항목의 하위 문자열 인 경우 길이를 기준으로 내림차순으로 단어를 정렬해야합니다.
reduce(lambda x, y: x.replace(y, dict[y]), dict, s)
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와 거의 같습니다. 한 가지 차이점은 d [] 대신 d.get ()을 사용하면 dict에없는 항목을 처리 할 수 있다는 것입니다.
>>> d = {'a':'b', 'c':'d'}
>>> s = "a c x"
>>> foo = s.split()
>>> ret = []
>>> for item in foo:
... ret.append(d.get(item,item)) # Try to get from dict, otherwise keep value
...
>>> " ".join(ret)
'b d x'
비슷한 상황에서 이것을 사용했습니다 (내 문자열은 모두 대문자였습니다).
def translate(string, wdict):
for key in wdict:
string = string.replace(key, wdict[key].lower())
return string.upper()
어떤 식 으로든 도움이되기를 바랍니다 ... :)
With the warning that it fails if key has space, this is a compressed solution similar to ghostdog74 and extaneons answers:
d = {
'Спорт':'Досуг',
'russianA':'englishA'
}
s = 'Спорт russianA'
' '.join(d.get(i,i) for i in s.split())
반응형
'developer tip' 카테고리의 다른 글
숫자 유형을 객체 키로 사용하는 방법이 있습니까? (0) | 2020.11.05 |
---|---|
C #이 두 개의 int 배열 구문에서 다르게 작동하는 이유 (0) | 2020.11.05 |
Python 스크립트 중간에있는 모든 변수를 지우려면 어떻게해야합니까? (0) | 2020.11.04 |
스트림에서 가져온 이미지 형식을 어떻게 알 수 있습니까? (0) | 2020.11.04 |
GIT-.suo 파일을 무시할 수 없습니다. (0) | 2020.11.04 |