簡體   English   中英

Python 字符串替換用一個案例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM