栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python中打印字符串会在字符串之前打印'u'吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python中打印字符串会在字符串之前打印'u'吗?

我认为您实际上对此感到惊讶的是,打印单个字符串与打印字符串列表的功能不同–无论是否为Unipre,这都是事实:

>>> hobby1 = u'Dizziness'>>> hobby2 = u'Vértigo'>>> hobbies = [hobby1, hobby2]>>> print hobby1Dizziness>>> print hobbies[u'Dizziness', u'Vxe9rtigo']

即使没有

u
,您也有多余的引号,更不用说反斜杠转义了。而且,如果您使用
str
字节字符串而不是
unipre
字符串尝试相同的操作,那么您仍然会使用引号和转义符(如果源文件和终端使用不同的编码,则您可能会使用mojibake字符,但是忘记了这一部分)。


在Python中,每个对象都可以具有两种不同的表示形式:最终用户友好表示形式

str
和程序员友好表示形式
repr
。对于字节字符串,这些表示分别是
Painting
'Painting'
。对于Unipre字符串,它们是
Painting
u'Painting'

print
语句使用
str
,因此
print hobby1
打印出
Painting
,不带引号(
u
如果为Unipre,则为)。

但是,

str
列表的使用其
repr
每个元素的,而不使用
str
。因此,当您打印时
hobbies
,每个元素都带有引号(
u
如果是Unipre,则带有引号)。

乍一看这很奇怪,但这是一个故意的设计决定,一旦习惯了,这是有道理的。并且打印出来将是不明确的

[foo, bar,baz]
-是三个字符串的列表还是两个字符串的列表,其中一个在中间有逗号?但是,更重要的是,无论您如何打印,列表 已经 不是用户友好的事情。
Myhobbies are [Painting, Stargazing]
看起来和一样丑陋
My hobbies are ['Painting','Stargazing']
。当您想向最终用户显示列表时,您总是想以某种有意义的方式显式格式化它。

通常,您想要的就是这样简单:

>>> print 'Hobbies:', ', '.join(hobbies)Hobbies: Painting, Stargazing

或者,对于Unipre字符串:

>>> print u'Hobbies:', u', '.join(hobbies)Hobbies: Painting, Stargazing


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638519.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号