我目前正在尝试根据检索到的文本比较两个字符串,但其中一个字符串具有西里尔字符。我需要将其转换为正确的 ascii 形式。我尝试了下面的代码来使它们匹配,但我不确定为什么它总是不返回任何内容。
import difflib
from difflib import SequenceMatcher
import re
import traceback
import unicodedata
title = "Хепа"
whatWasRead = "Xena"
whatWasRead = whatWasRead.replace("\n", " ")
title = title.replace("\n", " ")
title = unicodedata.normalize('NFC', title).encode('ascii','ignore').decode("utf-8")
whatWasRead = unicodedata.normalize('NFD', whatWasRead).encode('ascii','ignore').decode("utf-8")
whatWasRead = str(re.sub('[^a-zA-Z0-9 \n\.]', '', whatWasRead)).lower()
title = str(re.sub('[^a-zA-Z0-9 \n\.]', '', title)).lower()
whatWasRead = str(re.sub('[^a-zA-Z0-9 \n\.]', '', whatWasRead)).lower()
print(whatWasRead)
print(title)
看来您不想只删除非 ASCII 字符,而是想用最接近的 ASCII 等效字符替换它们。除了手工制作的替换桌子之外,我不知道有什么方法可以做到这一点。
mapping = {"Х": "X", "е": "e", "п": "n", "а": "a"}
title = ''.join(mapping.get(ch, ch) for ch in title)