Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';这个字符串规范化器Python代码段有什么问题?_Python_String_Encoding_Normalize - Fatal编程技术网

什么';这个字符串规范化器Python代码段有什么问题?

什么';这个字符串规范化器Python代码段有什么问题?,python,string,encoding,normalize,Python,String,Encoding,Normalize,似乎每次我认为我掌握了编码,我都会发现一些新的东西让我困惑:-) 我试图从UTF-8字符串中去除法语口音: >>> import unicodedata >>> s = u"éèêàùçÇ" >>> print(unicodedata.normalize('NFKD', s).encode('ascii','ignore')) 我希望将eeeaucC作为输出,并在Ubuntu 9.10和iPython 0.10中使用Python 2.6

似乎每次我认为我掌握了编码,我都会发现一些新的东西让我困惑:-)

我试图从UTF-8字符串中去除法语口音:

>>> import unicodedata

>>> s = u"éèêàùçÇ"

>>> print(unicodedata.normalize('NFKD', s).encode('ascii','ignore'))

我希望将
eeeaucC
作为输出,并在Ubuntu 9.10和iPython 0.10中使用Python 2.6.4获得
aaaaaaaa
,所有内容都设置为unicode。

经过进一步的测试,如果您使用Python 3或Python 2.6解释器而不是iPython,它会起作用


可能是错误的用户设置或错误。

在进一步测试后,如果您使用Python 3或Python 2.6解释器而不是iPython,则可以正常工作


可能是错误的用户设置或错误。

python
正常工作:

$ python
Python 2.6.4 (r264:75706, Dec  7 2009, 18:43:55) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> s = u"éèêàùçÇ"
>>> s
u'\xe9\xe8\xea\xe0\xf9\xe7\xc7'
>>> ord(s[0])
233
ipython
中存在一些错误:

$ ipython
Python 2.6.4 (r264:75706, Dec  7 2009, 18:43:55) 
Type "copyright", "credits" or "license" for more information.

IPython 0.10 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object'. ?object also works, ?? prints more.

In [1]: s = u"éèêàùçÇ"

In [2]: ord(s[0])
Out[2]: 195

In [3]: s
Out[3]: u'\xc3\xa9\xc3\xa8\xc3\xaa\xc3\xa0\xc3\xb9\xc3\xa7\xc3\x87'
如果从文件中读取,则
ipython
工作:

$ ipython
...
In [1]: import codecs

In [2]: s = codecs.open('s.txt', 'r', 'utf-8').read()

In [3]: s
Out[3]: u'\xe9\xe8\xea\xe0\xf9\xe7\xc7'

In [4]: ord(s[0])
Out[4]: 233

python
可以正常工作:

$ python
Python 2.6.4 (r264:75706, Dec  7 2009, 18:43:55) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> s = u"éèêàùçÇ"
>>> s
u'\xe9\xe8\xea\xe0\xf9\xe7\xc7'
>>> ord(s[0])
233
ipython
中存在一些错误:

$ ipython
Python 2.6.4 (r264:75706, Dec  7 2009, 18:43:55) 
Type "copyright", "credits" or "license" for more information.

IPython 0.10 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object'. ?object also works, ?? prints more.

In [1]: s = u"éèêàùçÇ"

In [2]: ord(s[0])
Out[2]: 195

In [3]: s
Out[3]: u'\xc3\xa9\xc3\xa8\xc3\xaa\xc3\xa0\xc3\xb9\xc3\xa7\xc3\x87'
如果从文件中读取,则
ipython
工作:

$ ipython
...
In [1]: import codecs

In [2]: s = codecs.open('s.txt', 'r', 'utf-8').read()

In [3]: s
Out[3]: u'\xe9\xe8\xea\xe0\xf9\xe7\xc7'

In [4]: ord(s[0])
Out[4]: 233

这段代码在Windows XP(法语版)上使用python 3.1时效果很好。这在我的python 2.6.4、Ubuntu 9.10、IPython 0.10上似乎也很好。它在我的python 3中工作得很好,但在python 2.6.4中同样的行为在python 2.6.2和Unicodata.unidata_版本5.1.0下也很好。刚刚安装:删除了“u”,得到了b'eeeaucC'。这可能是一个bug吗?这段代码在Windows XP(法语版)上使用python 3.1时效果很好。这似乎在我的python 2.6.4、Ubuntu 9.10、IPython 0.10上也很好。它在我的python 3中运行良好,但在python 2.6.4中同样的行为。在python 2.6.2和unicodedata.unidata_版本5.1.0下也很好。刚刚安装:删除了“u”,得到了b'eeeaucC'。可能是虫子吗?