我一直在为拉丁化一个cyrillic文本编写python脚本。转换是有规则的,但在此之前,我必须检查文本中的异常单词,并相应地替换它们。
(exceptions.txt(
джаз jaz
джек jek
меъёр me’yor
аъён a’yon
пицца pitsa
etc.
这里,拆分器是一个空白
exceptions[4].split(' ')[0] -> 'пицца'
(cyrillic.txt(
Нуқул пИцЦани еявериш зарар.
МеЪёРИни билиинг!
Мен дЖаЗнИ унчалик эшитмайман
问题是,这里的输入文本非常混乱,而且是故意的。
主要问题:我必须尽可能将带大小写的文本转换为原始文本。
(output.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)
输出:
Нуқул pItSaни еявериш зарар.
Me’yOИни билиинг!
Мен jAzнИ унчалик эшитмайман