[英]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.