[英]Python string replacement with a case
我一直在編寫python腳本來拉丁化西里爾文字。 並且有轉換規則,但在此之前我必須檢查文本中的異常詞並相應地替換它們。
(例外.txt)
джаз jaz
джек jek
меъёр me’yor
аъён a’yon
пицца pitsa
etc.
在這里,分隔符是一個空格
exceptions[4].split(' ')[0] -> 'пицца'
(西里爾文.txt)
Нуқул пИцЦани еявериш зарар.
МеЪёРИни билиинг!
Мен дЖаЗнИ унчалик эшитмайман
問題是這里的輸入文本非常混亂,而且是故意的。
主要問題:我必須盡可能將文本轉換為原始文本中的大小寫。
(輸出.txt)
Nuqul pItsani yeyaverish zarar.
Me’yoRIni biling!
Men jaZnI unchalik eshitmayman
從另一個問題:
import re
def case_sensitive_replace(s, before, after):
regex = re.compile(re.escape(before), re.I)
return regex.sub(lambda x: ''.join(d.upper() if c.isupper() else d.lower()
for c,d in zip(x.group(), after)), s)
cyrillic = '''Нуқул пИцЦани еявериш зарар.
МеЪёРИни билиинг!
Мен дЖаЗнИ унчалик эшитмайман'''
result = case_sensitive_replace(cyrillic, "пицца", "pitsa")
print(result)
只需遍歷所有異常:
import re
def case_sensitive_replace(s, before, after):
regex = re.compile(re.escape(before), re.I)
return regex.sub(lambda x: ''.join(d.upper() if c.isupper() else d.lower()
for c,d in zip(x.group(), after)), s)
cyrillic = '''Нуқул пИцЦани еявериш зарар.
МеЪёРИни билиинг!
Мен дЖаЗнИ унчалик эшитмайман'''
exceptions = '''джаз jaz
джек jek
меъёр me’yor
аъён a’yon
пицца pitsa'''
result = cyrillic
for x in exceptions.split('\n'):
before = x.split(' ')[0]
after = x.split(' ')[1]
result = case_sensitive_replace(result, before, after)
print(result)
output:
Нуқул pItSaни еявериш зарар.
Me’yOИни билиинг!
Мен jAzнИ унчалик эшитмайман
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.