Wol*_*olf 9 python unicode wget unicode-normalization
我正在尝试从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.
Mik*_*ton 41
如何转换所有这些转义字符到各自的角色一样,如果有一个统一的单,我怎么转换到这一个标准的一个?
假设你已经将你的unicode加载到一个名为my_unicode...normalizingà 的变量中,这就是这个简单...
import unicodedata
output = unicodedata.normalize('NFD', my_unicode).encode('ascii', 'ignore')
Run Code Online (Sandbox Code Playgroud)
明确的例子......
>>> myfoo = u'àà'
>>> myfoo
u'\xe0\xe0'
>>> unicodedata.normalize('NFD', myfoo).encode('ascii', 'ignore')
'aa'
>>>
Run Code Online (Sandbox Code Playgroud)
它的工作原理
unicodedata.normalize('NFD', "insert-unicode-text-here")执行unicode文本的规范分解(NFD) ; 然后我们使用str.encode('ascii', 'ignore')将NFD映射字符转换为ascii(忽略错误).
@Mike Pennington 的解决方案非常有效,感谢他。但是当我尝试该解决方案时,我注意到它失败了一些未在 NFD 定义的特殊字符(即土耳其字母表中的 \xc4\xb1 字符)。
\n我发现了另一个解决方案,您可以使用 unidecode 库来进行此转换。
\n>>>import unidecode\n>>>example = "ABC\xc3\x87DEFG\xc4\x9eHI\xc4\xb0JKLMNO\xc3\x96PRS\xc5\x9eTU\xc3\x9cVYZabc\xc3\xa7defg\xc4\x9fh\xc4\xb1ijklmno\xc3\xb6prs\xc5\x9ftu\xc3\xbcvyz"\n\n\n#convert it to utf-8\n>>>utf8text = unicode(example, "utf-8")\n\n>>> print utf8text\nABC\xc3\x87DEFG\xc4\x9eHI\xc4\xb0JKLMNO\xc3\x96PRS\xc5\x9eTU\xc3\x9cVYZabc\xc3\xa7defg\xc4\x9fh\xc4\xb1ijklmno\xc3\xb6prs\xc5\x9ftu\xc3\xbcvyz\n\n#convert utf-8 to ascii text\nasciitext = unidecode.unidecode(utf8text)\n\n>>>print asciitext\n\nABCCDEFGGHIIJKLMNOOPRSSTUUVYZabccdefgghiijklmnooprsstuuvyz\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
18008 次 |
| 最近记录: |