像:
u'Hello'
我的猜测是它表示“Unicode”,它是否正确?
如果是这样,从什么时候开始?
你是对的,请看3.1.3. Unicode Strings。
这是自Python 2.0以来的语法。
Python 3使它们成为冗余,因为默认字符串类型是Unicode。版本3.0到3.2删除了它们,但它们是re-added in 3.3+以与Python 2兼容以帮助2到3过渡。
u'Some String'
中的u表示您的字符串是Unicode字符串。
问:我很可怕,非常匆忙,我从谷歌搜索登陆这里。我正在尝试将这些数据写入文件,我收到了一个错误,我需要这个最简单,可能有缺陷的解决方案。
答:你应该在角色集上真正阅读乔尔的Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)论文。
问:没有时间代码
A:很好。试试str('Some String')
或'Some String'.encode('ascii', 'ignore')
。但你应该真正阅读一些关于Converting a Unicode string和this的优秀,优秀的字符编码入门的答案和讨论。
我的猜测是它表示“Unicode”,它是否正确?
是。
如果是这样,从什么时候开始?
Python 2.ch.
在Python 3.x中,字符串默认使用Unicode,并且不需要u
前缀。注意:在Python 3.0-3.2中,u是语法错误。在Python 3.3+中再次合法,以便更容易编写2/3兼容的应用程序。
以下应该有所帮助:
http://docs.python.org/library/functions.html#unicode
http://www.amk.ca/python/howto/unicode(如果您已经熟悉Unicode原则,请跳至“Python的Unicode支持”)
所有适用于人类的字符串都应使用u“”。
我发现在处理Python字符串时,以下思维方式有很大帮助:所有Python清单字符串都应该使用u""
语法。 ""
语法仅用于字节数组。
在抨击之前,让我解释一下。大多数Python程序都是从""
用于字符串开始的。但是他们需要支持互联网上的文档,所以他们开始使用"".decode
,突然之间他们就解码这个问题到处都是例外 - 所有这些都是因为""
用于字符串。在这种情况下,Unicode确实像病毒一样,会造成严重破坏。
但是,如果你遵循我的规则,你就不会有这种感染(因为你已经被感染了)。
这是Unicode。
只需将变量放在str()
之间,它就能正常工作。
但是如果你有两个如下列表:
a = ['co32','co36']
b = [u'co32',u'co36']
如果你检查set(a)==set(b)
,它会变为False,但如果你这样做:
b = str(b)
set(a)==set(b)
现在,结果将是True。
我来到这里因为我的requests
输出上有滑稽的char综合症。我认为response.text
会给我一个正确解码的字符串,但在输出中我找到了有趣的双字符,其中德国的变音符号应该是。
事实证明response.encoding
在某种程度上是空的,因此响应不知道如何正确解码内容并将其视为ASCII(我猜)。
我的解决方案是使用'response.content'获取原始字节并手动将decode('utf_8')
应用于它。结果是schöneUmlaute。
正确解码
为
与不正确的解码
für