以下输出是如何产生的?
>>> 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必须仅将字符串的第一个字母大写时,每个字母如何获得大写?
答案 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'