打印列表中元素之前的“ u”?我没有在代码中键入u。
hobbies = []
#prompt user three times for hobbies
for i in range(3):
hobby = raw_input('Enter a hobby:')
hobbies.append(hobby)
#print list stored in hobbies
print hobbies
当我运行此命令时,它将打印列表,但其格式如下:
Enter a hobby: Painting
Enter a hobby: Stargazing
Enter a hobby: Reading
[u'Painting', u'Stargazing', u'Reading']
None
那些“ u”来自列表中每个元素的位置?
我认为您实际上对此感到惊讶的是,打印单个字符串与打印字符串列表的功能不同–无论是否为Unicode,这都是事实:
>>> hobby1 = u'Dizziness'
>>> hobby2 = u'Vértigo'
>>> hobbies = [hobby1, hobby2]
>>> print hobby1
Dizziness
>>> print hobbies
[u'Dizziness', u'V\xe9rtigo']
即使没有u
,您也有多余的引号,更不用说反斜杠转义了。而且,如果您使用str
字节字符串而不是unicode
字符串尝试相同的操作,那么您仍然会使用引号和转义符(如果源文件和终端使用不同的编码,则您可能会使用mojibake字符,但是忘记了这一部分)。
在Python中,每个对象都可以具有两种不同的表示形式:最终用户友好表示形式str
和程序员友好表示形式repr
。对于字节字符串,这些表示分别是Painting
和'Painting'
。对于Unicode字符串,它们是Painting
和u'Painting'
。
该print
语句使用str
,因此print hobby1
打印出Painting
,不带引号(u
如果为Unicode,则为)。
但是,str
列表的使用其repr
每个元素的,而不使用str
。因此,当您打印时hobbies
,每个元素都带有引号(u
如果是Unicode,则带有引号)。
乍一看这很奇怪,但这是一个故意的设计决定,一旦习惯了,这是有道理的。并且打印出来将是不明确的[foo, bar, baz]
-是三个字符串的列表还是两个字符串的列表,其中一个在中间有逗号?但是,更重要的是,无论您如何打印,列表 已经 不是用户友好的事情。My hobbies are [Painting, Stargazing]
看起来和一样丑陋My hobbies are ['Painting', 'Stargazing']
。当您想向最终用户显示列表时,您总是想以某种有意义的方式显式格式化它。
通常,您想要的就是这样简单:
>>> print 'Hobbies:', ', '.join(hobbies)
Hobbies: Painting, Stargazing
或者,对于Unicode字符串:
>>> print u'Hobbies:', u', '.join(hobbies)
Hobbies: Painting, Stargazing
问题内容: 这肯定是一件容易的事,但这确实困扰着我。 我有一个脚本,可以读取网页并使用Beautiful Soup对其 进行解析。我从 汤中 提取所有链接,因为我的最终目标是打印出link.contents。 我要解析的所有文本都是ASCII。我知道Python将字符串视为unicode,并且我确信这非常方便,在我的wee脚本中没有用。 每次我去打印一个包含’String’的变量时,我都会被打印到
问题内容: 我正在编写一个程序,该程序将以字符串形式输出唯一字符(通过扫描仪输入)。我创建了一个方法来尝试实现此目的,但我一直在获取不重复的字符,而不是字符串中唯一的一个(或多个)字符。我只想要唯一的字母。 这是我的代码: 这是上面代码的示例输出: 预期的输出将是: 问题答案: 根据所需的输出,当以后重复时,必须替换最初已经添加的字符,因此:
问题内容: 我曾尝试打印它,但由于它是转义字符,因此只是通过而已。例如,输出应如下。 提前致谢 问题答案: 为此以及将来的参考:
#include <stdio.h> #include <wchar.h> int main(void) { char str1[] = "abcd"; wchar_t str2[] = L"abcd"; return 0; } 技巧 用gdb调试程序时,可以使用“x/s”命令打印ASCII字符串。以上面程序为例: Temporary brea
我想打印一个字符串作为valuei尝试遵循宏[2]和“set”[1]选项,但仍然没有运气; [1] 我怎样才能使我的速度测试版打印像;?
我被一些有趣的任务困住了。我有3个字符串(hello,heavy&word)。需要计算每一个世界的总和并打印最大的世界和总和。用于计算-a=1,z=26。所以hello=50,heavy=61&word=60。最大的字符串是“Heavy”,我需要像“Heavy,61”那样打印出来。我找到了从一个字符串计算字符的代码: