有什么办法可以删除外来字母,但在python中保留带有重音的英文字母?
例如我希望将Pic d's转换为Pic d'Os,但不希望马萨纳转换为Ma Sa Na-理想情况下,我希望将其转换为空白字符串。
我使用过unidecode,但是unidecode还将外国字母转换为ascii。
感谢您对此进行调查。
答案 0 :(得分:1)
现代的正则表达式引擎支持字符类Latin
或isLatin
,它们将匹配带重音符号或无重音拉丁字母。
仅匹配您想要的正则表达式会稍微复杂一些。您不想仅匹配Letter
或Number
,因为它们将匹配其他脚本的字母和数字。您既不想包含也不排除所有合并的重音符号:您希望小写的拉丁字母a +合并的重音符号显示为á,但是不希望包含重音符号的希腊字母。因此,您需要匹配(\p{Latin}\p{Mark}*)|\p{Punctuation}|\p{Separator}
之类的东西。