python字符串列表奇怪的输出

时间:2014-05-31 10:50:00

标签: python string list

以下输出是如何产生的?

>>> a
'hello'
>>> a = list(a)  
>>> a
['h', 'e', 'l', 'l', 'o']
>>> a = str(a)
>>> a
"['h', 'e', 'l', 'l', 'o']"
>>> a.title()
"['H', 'E', 'L', 'L', 'O']"
>>> a[0]
'['
>>> a[1]
"'"
>>> a[2]
'h'

当title必须仅将字符串的第一个字母大写时,每个字母如何获得大写?

3 个答案:

答案 0 :(得分:5)

str()不会将单个字符列表重新组合成一个字符串。您可以使用str.join()

>>> a = list('hello')
>>> ''.join(a)
'hello'

str(listobject)返回列表对象的字符串表示形式,而不是您转换为列表的原始字符串。字符串表示是一个调试工具;在大多数情况下,您可以将文本粘贴回Python解释器并重新创建原始数据。

如果您只想将首字母大写,请直接在原始字符串上使用str.title()

>>> 'hello'.title()
'Hello'
>>> 'hello world'.title()
'Hello World'

答案 1 :(得分:2)

我认为你对title如何运作感到困惑。

In [5]: s = "hello there"

In [6]: s.title()
Out[6]: 'Hello There'

看看它如何大写每个单词的第一个字母?当您str()列表时,它不会再将hello视为单个字词。相反,它会单独看到每个字母,并决定将每个字母大写。

答案 2 :(得分:0)

>>> a=list('hello')
>>> str(a)
"['h', 'e', 'l', 'l', 'o']"
>>> len(str(a))
25

所以你有一个25个字符的字符串。所有',等都是字符串的一部分。 title看到5个单字符的单词,因此每个单词都是大写的。请尝试使用''.join

>>> ''.join(a)
'hello'
>>> len(''.join(a))
5
>>> ''.join(a).title()
'Hello'