在Python中是否有一种标准方法来规范化unicode字符串,以便它只能理解可用于表示它的最简单的unicode实体?
我的意思是,一些东西,想翻译的顺序['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']来['LATIN SMALL LETTER A WITH ACUTE']?
看看问题出在哪里:
>>> import unicodedata
>>> char = "á"
>>> len(char)
1
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A WITH ACUTE']
Run Code Online (Sandbox Code Playgroud)
但现在:
>>> char = "a?"
>>> len(char)
2
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
Run Code Online (Sandbox Code Playgroud)
当然,我可以迭代所有字符并进行手动替换等,但效率不高,我很确定我会错过一半的特殊情况,并且会犯错误.
我正在尝试从http://dictionary.reference.com/browse/apple?s=t等字典网站下载一些内容
我遇到的问题是原始段落有所有那些波浪线,反向字母等等,所以当我读取本地文件时,我最终会得到像\ x85,\ xa7,\ x8d等那些有趣的转义字符. .
我的问题是,有什么方法可以将所有转义字符转换为各自的UTF-8字符,例如,如果有'à'我如何将其转换为标准'a'?
Python调用代码:
import os
word = 'apple'
os.system(r'wget.lnk --directory-prefix=G:/projects/words/dictionary/urls/ --output-document=G:\projects\words\dictionary\urls/' + word + '-dict.html http://dictionary.reference.com/browse/' + word)
Run Code Online (Sandbox Code Playgroud)
我在Windows 7系统上使用wget-1.11.4-1(不要杀了我的Linux用户,这是客户端的要求),并且用Python 2.6脚本文件启动了wget exe.
除了Python,我需要这个问题的解决方案!我已经尝试为Python安装regex库,因为显然可以在Python的正则表达式中使用POSIX表达式,但是我猜它在[:alpha:]类中不包含Unicode字符.例如:
>>> re.search(r'[[:alpha:] ]+','Please work blåbær and NOW stop 123').group(0)
'Please work bl'
Run Code Online (Sandbox Code Playgroud)
当我希望它匹配 Please work blåbær and NOW stop
编辑:我使用的是Python 2.7
编辑2:我尝试了以下内容:
>>> re.search(re.compile('[\w ]+', re.UNICODE),'Please work blåbær and NOW stop 123').group(0)
'Please work bl\xc3'
Run Code Online (Sandbox Code Playgroud)
不是我想要的(我想在第一个非ASCII字符之后匹配部分),但至少它在字符上比以前更匹配.我应该在这做什么才能让它与我想要的其他东西相匹配?
编辑3:我不想匹配任何非"单词"字符; "word"是指az,AZ,space和单词字符的任何重音变体.我希望我得到了我的想法; 在一个短语中
lets match força, but stop before that comma
Run Code Online (Sandbox Code Playgroud)
我想只匹配 lets match força
编辑4:所以我尝试将Python 3用于这个脚本:
>>> re.search(re.compile('[\w ]+', re.UNICODE),'lets match força, but stop before that comma').group(0)
'lets match força'
Run Code Online (Sandbox Code Playgroud)
我猜它在Python 3中大部分都有用,除了它还匹配数字(我绝对不想要)和下划线.有什么方法可以解决这个问题,在Python …