Unicode指定了一组可以对拉丁文字符进行修改。如何将这些unicode字符转换为python中的普通拉丁字符?
说清楚点,我不是在问如何去掉字母中的重音。我想问的是,如何转换语言上相同含义的东西,但是一些装饰的显示,比如负的,包围的,封装在一个盒子类型的显示器中。
例如,我如何转换
°C
至
原°c
(剥离这些非语言字符将是一个单独的任务)
发布于 2019-08-22 23:46:00
这并不完美,但您要寻找的是类似于Unicode分解的东西。Unicode规范化和分解的概念本身就是一本书。
幸运的是,对于一些快速和肮脏的东西,Python有这个为你内置的!
>>> import unicodedata
>>> unicodedata.normalize('NFKC', '°° c')
'°ORIGINAL° c'发布于 2019-08-22 23:36:22
最简单的方法是自己制作一个转换图。
类似于:
conversion_map = {'': 'o', '': 'r', '': 'i'}
我不知道有一种简单的逻辑方法来转换这些价值观..。但有人可以纠正我。
你也可以在这里寻找其他的想法。拉丁文-1至ascii
发布于 2019-09-06 02:29:19
即使我接受了Alyssa的回答,我也想提供一个解决我真正想要的东西的替代方案。如果我只保留字母字符,我不仅去掉了修饰符字符,而且去掉了各种非字母字符(比如表情符号和数学符号)。
我担心我最终会去掉汉字或其他非拉丁字符,但显然所有语言的字符都被unicode标准认为是字母。
# 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)https://stackoverflow.com/questions/57618155
复制相似问题