我使用第三方工具输出Unicode格式的文件.但是,我更喜欢它是ASCII.该工具没有更改文件格式的设置.
使用Python转换整个文件格式的最佳方法是什么?
只需使用该unicode
函数就可以轻松地转换文件,但是你会遇到没有直接ASCII等效的Unicode字符问题.
这篇博客推荐使用该unicodedata
模块,该模块似乎可以在没有直接对应的ASCII值的情况下粗略地转换字符,例如
>>> title = u"Klüft skräms inför på fédéral électoral große"
通常转换为
Klft skrms infr p fdral lectoral groe
这是非常错误的.但是,使用该unicodedata
模块,结果可以更接近原始文本:
>>> import unicodedata >>> unicodedata.normalize('NFKD', title).encode('ascii','ignore') 'Kluft skrams infor pa federal electoral groe'
我认为这是一个比你意识到的更深层次的问题.简单地将文件从Unicode更改为ASCII很容易,但是,将所有Unicode字符转换为合理的ASCII字符(两种编码中都没有多个字母)是另一种.
这个Python Unicode教程可以让您更好地了解转换为ASCII的Unicode字符串会发生什么:http://www.reportlab.com/i18n/python_unicode_tutorial.html
以下是该网站的有用引用:
Python 1.6还获得了一个"unicode"内置函数,您可以在其中指定编码:
> >>> unicode('hello') u'hello' > >>> unicode('hello', 'ascii') u'hello' > >>> unicode('hello', 'iso-8859-1') u'hello' > >>>
所有这三个都返回相同的东西,因为'Hello'中的字符对于所有三种编码都是通用的.
现在让我们编码带有欧洲口音的东西,它不在ASCII之内.您在控制台上看到的内容可能取决于您的操作系统区域设置; Windows允许我输入ISO-Latin-1.
> >>> a = unicode('André','latin-1') > >>> a u'Andr\202'
如果你不能输入急性字母e,你可以输入字符串'Andr\202',这是明确的.
Unicode支持所有常见操作,例如迭代和拆分.我们不会在这里碾压它们.