繁体   English   中英

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

[英]What's the u prefix in a Python string?

像:

u'Hello'

我的猜测是它表示“Unicode”,对吗?

如果是这样,它是从什么时候开始提供的?

你说得对,见3.1.3。 Unicode 字符串

这是自 Python 2.0 以来的语法。

Python 3 使它们变得多余,因为默认的字符串类型是 Unicode。 3.0 到 3.2 版本删除了它们,但它们在 3.3+重新添加以与 Python 2 兼容,以帮助 2 到 3 过渡。

u'Some String'的 u 表示您的字符串是Unicode string

问:我非常着急,我是从 Google 搜索来到这里的。 我正在尝试将此数据写入文件,但出现错误,我需要最简单的,可能有缺陷的解决方案。

答:您真的应该阅读 Joel 撰写的关于字符集的关于 Unicode 和字符集(没有借口!)的文章,每个软件开发人员绝对必须知道绝对最小值

问:sry没有时间码请

答:好的。 尝试str('Some String')'Some String'.encode('ascii', 'ignore') 但是你真的应该阅读一些关于Converting a Unicode string的答案和讨论,以及这本优秀的、优秀的、关于字符编码的入门书。

我的猜测是它表示“Unicode”,对吗?

是的。

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

Python 2.x。

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

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

结果response.encoding不知何故是空的,所以response不知道如何正确解码内容,只是将其视为 ASCII (我猜)。

我的解决方案是获取带有 'response.content' 的原始字节,并对其手动应用decode('utf_8') 结果是schöne Umlaute。

正确解码

毛皮

与不正确解码

fĂźr

以下内容应有所帮助:

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

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

所有用于人类的字符串都应该使用 u""。

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

在抨击开始之前,让我解释一下。 大多数 Python 程序开始时使用""作为字符串。 但是随后他们需要支持 Internet 上的文档,因此他们开始使用"".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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM