用大小写替换Python字符串



我一直在为拉丁化一个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нИ унчалик эшитмайман

最新更新