相关疑难解决方法(0)

Python str vs unicode类型

使用Python 2.7,我想知道使用类型unicode而不是str因为它们两者似乎能够保存Unicode字符串的真正优势.除了能够unicode使用转义字符串在字符串中设置Unicode代码之外,还有什么特殊原因\吗?:

执行模块:

# -*- coding: utf-8 -*-

a = 'á'
ua = u'á'
print a, ua
Run Code Online (Sandbox Code Playgroud)

结果:á,á

编辑:

使用Python shell进行更多测试:

>>> a = 'á'
>>> a
'\xc3\xa1'
>>> ua = u'á'
>>> ua
u'\xe1'
>>> ua.encode('utf8')
'\xc3\xa1'
>>> ua.encode('latin1')
'\xe1'
>>> ua
u'\xe1'
Run Code Online (Sandbox Code Playgroud)

因此,unicode字符串似乎使用latin1而不是编码utf-8,原始字符串使用utf-8?我现在更加困惑了!:S

python string unicode

98
推荐指数
3
解决办法
10万
查看次数

这些字符串在Python解释器中如何表示内部?我不明白

# -*- coding: utf-8 -*-

a = 'éá??úöüó€'
print type(a)    # <type 'str'>
print a          # éá??úöüó€
print ord(a[-1]) # 172
Run Code Online (Sandbox Code Playgroud)

这为什么有效?不应该这个SyntaxError: Non-ASCII character '\xc3' in file ...吗?字符串中有unicode文字.

当我用它u作为前缀时,结果是不同的:

# -*- coding: utf-8 -*-

a = u'éá??úöüó€'
print type(a)    # <type 'unicode'>
print a          # éá??úöüó€
print ord(a[-1]) # 8364
Run Code Online (Sandbox Code Playgroud)

为什么?python中的内部表示有什么区别?我怎么能亲自看到它?:)

python string unicode python-2.7

5
推荐指数
1
解决办法
650
查看次数

Python ascii utf unicode

当我解析这个XML时p = xml.parsers.expat.ParserCreate():

<name>Fortuna D&#252;sseldorf</name>
Run Code Online (Sandbox Code Playgroud)

字符解析事件处理程序包括u'\xfc'.

怎么可以u'\xfc'变成u'ü'


这是这篇文章中的主要问题,其余的只是展示了关于它的进一步(咆哮)的想法

是不是Python unicode打破了,因为u'\xfc'屈服u'ü'而没有别的?你'xfc'已经是一个unicode字符串,所以再次将它转换为unicode不起作用!将其转换为ASCII也不起作用.

我发现的唯一有用的是:(这不是故意的,对吧?)

exec( 'print u\'' + 'Fortuna D\xfcsseldorf'.decode('8859') + u'\'')
Run Code Online (Sandbox Code Playgroud)

用utf-8替换8859会失败!那是什么意思?

还有什么是Python unicode HOWTO的意义? - 它只给出了失败的例子而不是显示如何进行转换(特别是在这里提出类似问题的ppl的houndreds)实际上在现实世界中使用.

Unicode并不神奇 - 为什么这么多ppl有问题?

unicode转换的根本问题很简单:

一个双向查找表'\ xFC'< - >u'ü'

unicode( 'Fortuna D\xfcsseldorf' ) 
Run Code Online (Sandbox Code Playgroud)

为什么Python的创建者认为显示错误而不是简单地生成错误的原因是u'Fortuna Düsseldorf'什么?

还有为什么他们让它不可逆?:

 >>> u'Fortuna Düsseldorf'.encode('utf-8')
 'Fortuna D\xc3\xbcsseldorf'
 >>> unicode('Fortuna D\xc3\xbcsseldorf','utf-8')
 u'Fortuna D\xfcsseldorf'    
Run Code Online (Sandbox Code Playgroud)

python unicode encoding utf-8 python-2.x

2
推荐指数
1
解决办法
2160
查看次数

两个明显相同的Python Unicode UTF8编码字符串不匹配

>>> str1 = unicode('María','utf8')
>>> str2 = u'María'.encode('utf8')
>>> str1 == str2
False
Run Code Online (Sandbox Code Playgroud)

怎么可能?

如果它是相关的,我正在使用iPython笔记本.

python unicode utf-8

1
推荐指数
1
解决办法
1000
查看次数

标签 统计

python ×4

unicode ×4

string ×2

utf-8 ×2

encoding ×1

python-2.7 ×1

python-2.x ×1