首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中将修饰的拉丁文unicode字符转换为纯拉丁文

如何在python中将修饰的拉丁文unicode字符转换为纯拉丁文
EN

Stack Overflow用户
提问于 2019-08-22 23:30:18
回答 3查看 266关注 0票数 5

Unicode指定了一组可以对拉丁文字符进行修改。如何将这些unicode字符转换为python中的普通拉丁字符?

说清楚点,我不是在问如何去掉字母中的重音。我想问的是,如何转换语言上相同含义的东西,但是一些装饰的显示,比如负的,包围的,封装在一个盒子类型的显示器中。

例如,我如何转换

°C

原°c

(剥离这些非语言字符将是一个单独的任务)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-22 23:46:00

这并不完美,但您要寻找的是类似于Unicode分解的东西。Unicode规范化和分解的概念本身就是一本书。

幸运的是,对于一些快速和肮脏的东西,Python有这个为你内置的

代码语言:javascript
复制
>>> import unicodedata
>>> unicodedata.normalize('NFKC', '°° c')
'°ORIGINAL° c'
票数 10
EN

Stack Overflow用户

发布于 2019-08-22 23:36:22

最简单的方法是自己制作一个转换图。

类似于:

conversion_map = {'': 'o', '': 'r', '': 'i'}

我不知道有一种简单的逻辑方法来转换这些价值观..。但有人可以纠正我。

你也可以在这里寻找其他的想法。拉丁文-1至ascii

票数 1
EN

Stack Overflow用户

发布于 2019-09-06 02:29:19

即使我接受了Alyssa的回答,我也想提供一个解决我真正想要的东西的替代方案。如果我只保留字母字符,我不仅去掉了修饰符字符,而且去掉了各种非字母字符(比如表情符号和数学符号)。

我担心我最终会去掉汉字或其他非拉丁字符,但显然所有语言的字符都被unicode标准认为是字母。

代码语言:javascript
复制
# only keep letters, which apparently includes all kinds of languages https://www.compart.com/en/unicode/category/Lo
keep_categories = ('Ll', 'Lm', 'Lo', 'Lt', 'Lu', 'Zs')
filtered_string  = ' '.join(''.join(filter(lambda c: unicodedata.category(c) in keep_categories, w)) for w in words)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57618155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档