使用Python库unicodedata中的normalize()函数将字母和变音符号分离,然后比较它们的编码值。
示例代码:
import unicodedata
def compare_diacritics(string1, string2): """ 比较两个罗马尼亚字符串的变音符号 """ # 使用NFC规范化将字符串中的变音符号合并 normalized1 = unicodedata.normalize('NFC', string1) normalized2 = unicodedata.normalize('NFC', string2)
# 分别获取两个字符串中的字母和变音符号
letters1 = ''.join(c for c in normalized1 if not unicodedata.combining(c))
letters2 = ''.join(c for c in normalized2 if not unicodedata.combining(c))
diacritics1 = ''.join(c for c in normalized1 if unicodedata.combining(c))
diacritics2 = ''.join(c for c in normalized2 if unicodedata.combining(c))
# 比较字母和变音符号的编码值
if letters1 == letters2:
return diacritics1 == diacritics2
else:
return False
print(compare_diacritics('știință', 'stiinta')) # True print(compare_diacritics('Nu-i nicio problemă', 'Nu-i nicio problema')) # False