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

问题描述 投票:181回答:7

像:

u'Hello'

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

如果是这样,从什么时候开始?

python syntax
7个回答
106
投票

你是对的,请看3.1.3. Unicode Strings

这是自Python 2.0以来的语法。

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


111
投票

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


50
投票

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

是。

如果是这样,从什么时候开始?

Python 2.ch.

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


2
投票

以下应该有所帮助:

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

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


2
投票

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

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

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

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


2
投票

这是Unicode。

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

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

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

如果你检查set(a)==set(b),它会变为False,但如果你这样做:

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

现在,结果将是True。


1
投票

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

事实证明response.encoding在某种程度上是空的,因此响应不知道如何正确解码内容并将其视为ASCII(我猜)。

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

正确解码

与不正确的解码

für

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.