以免说我有这样的字符串:string = "hello world"我只想将实际字母大写,所以如果我选择第二个字母,我的输出应该如下所示:hEllo wold但是,如果我尝试例如:string[1].upper()我的输出是:hello world并不是:hEllo wold我不知道为什么...
3 回答

汪汪一只猫
TA贡献1898条经验 获得超8个赞
这一行:
string[1].upper()
是不是按照你的想法去做。当然,它将 中的值大写string[1]
,但它会返回一个带有结果的新字符串!- 因为在 Python 中字符串是不可变的。现在,您可能会认为这会解决它:
string[1] = string[1].upper()
...但是不,这将失败,因为再一次 - 字符串是不可变的。您别无选择,只能创建一个新字符串,并通过一些逻辑来判断您想要大写的位置。例如,要将 index = 1 处的值大写:
''.join(c.upper() if i == 1 else c for i, c in enumerate(string))

哔哔one
TA贡献1854条经验 获得超8个赞
要仅大写字符串的一个字母,您必须将字符串从第 n 个位置开始的部分大写,并将其分配回变量:
string = string[:n] + string[n:].capitalize()

12345678_0001
TA贡献1802条经验 获得超5个赞
在 Python 中,字符串不可修改,因此您指定的操作将不起作用。
为了使这项工作,您可以将字符串转换为列表,然后将特定字符转换为大写,然后将结果连接回字符串。
sample_str="hello world"
sample_list=list(sample_str)
sample_list[2]=sample_list[2].upper()
print(''.join(str(i) for i in sample_list))
添加回答
举报
0/150
提交
取消