【发布时间】:2021-06-21 20:04:42
【问题描述】:
我尝试将字符串的格式从 latin1 更改为 ascii,除了一些字符 æ ø 之外,大多数字符串都更改得很好。 Æ 和 Ø。
我检查了使用 R 包时字符是否正确更改 (stringi::stri_trans_general(loc1, "latin-ascii) 但 Python 的 unicodedata 包不能正常工作。
有没有办法在 Python 中正确转换它们?我猜它可能需要额外的字典。
有关信息,我已应用以下功能来更改格式: unicodedata.normalize('NFKD', "拉丁字符串...").encode('latin1', 'ignore').decode('ascii')
【问题讨论】:
-
“没有很好地工作”不是一个好的问题描述。显示一些代码,显示一些结果,显示一些预期结果。
-
barentsøya 应该改为 barentsoya(R 包做得很好)但 Python 将其改为 barentsya(因为编码函数中的 'ignore' 选项)
-
我必须道歉,我认为 unicodedata 是这样做的方法,但我把它与 Python 不包含的
unidecode混淆了。看看吧。 -
你可能想看看模块
unidecode,它做了我认为你想要的,认为这很难说,因为你实际上并没有说你想要像@这样的字符发生什么987654324@ 和ø和ß,只是设置errors="ignore"的结果不是你所期望的,这就是R 所做的(期望我们都知道R 所做的事情是不明智的)。unidecode所做的是ae、o、ss。那可能也不是你想要的。