Python字符串中的u前缀是什么?

时间:2010-03-17 18:43:21

标签: python syntax

喜欢在:

u'Hello'

我的猜测是它表示“Unicode”,它是否正确?

如果是,那么什么时候可用?

7 个答案:

答案 0 :(得分:109)

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 stringthis优秀,优秀的字符编码入门的一些答案和讨论。

答案 1 :(得分:99)

你是对的,请参阅 3.1.3. Unicode Strings

这是自Python 2.0以来的语法。

Python 3使它们成为冗余,因为默认的字符串类型是Unicode。版本3.0到3.2删除了它们,但它们是re-added in 3.3+以便与Python 2兼容以帮助进行2到3的转换。

答案 2 :(得分:50)

  

我的猜测是它表示“Unicode”,它是否正确?

  

如果是,那么什么时候可用?

Python 2.x。

在Python 3.x中,字符串默认使用Unicode,不需要u前缀。 注意:在Python 3.0-3.2中,u是语法错误。在Python 3.3+中再次合法,可以更容易地编写2/3兼容的应用程序。

答案 3 :(得分:2)

以下内容应该有所帮助:

http://docs.python.org/library/functions.html#unicode

http://www.amk.ca/python/howto/unicode(如果您已熟悉Unicode原则,请跳至“Python的Unicode支持”)

答案 4 :(得分:2)

所有适用于人类的字符串都应使用u“”。

我发现在处理Python字符串时,以下思维方式有很大帮助:所有 Python清单字符串应使用u""语法。 ""语法仅用于字节数组。

在抨击开始之前,让我解释一下。大多数Python程序都开始使用""表示字符串。但是他们需要支持互联网上的文档,因此他们开始使用"".decode,突然之间他们就解码这个问题到处都是例外 - 所有这些都是因为""用于字符串。在这种情况下,Unicode确实像病毒一样,会造成严重破坏。

但是,如果你遵循我的规则,你就不会有这种感染(因为你已经被感染了)。

答案 5 :(得分:2)

它的Unicode。

只需将变量放在str()之间,它就能正常工作。

但是如果你有两个如下列表:

a = ['co32','co36']
b = [u'co32',u'co36']

如果您检查set(a)==set(b),它将显示为False,但如果您执行如下操作:

b = str(b)
set(a)==set(b)

现在,结果将为True。

答案 6 :(得分:1)

我来到这里是因为我的requests输出中有滑稽的char综合症。我以为response.text会给我一个正确解码的字符串,但是在输出中我发现了有趣的双字符,其中德语变音符应该是。

结果response.encoding以某种方式显示为空,因此响应不知道如何正确解码内容并将其视为ASCII(我猜)。

我的解决方案是使用'response.content'获取原始字节并手动应用decode('utf_8')。结果是schöneUmlaute。

正确解码

  

献给

VS。解码不正确

  

fĂźr