【问题标题】:Can I uppercase particular letter in string in Python? [duplicate]我可以在 Python 中将字符串中的特定字母大写吗? [复制]
【发布时间】:2019-09-23 10:35:36
【问题描述】:

免得说我有这样的字符串:

string = "hello world"

我只想将实际字母大写,所以如果我选择第二个字母,我的输出应该如下所示:

hEllo wold

但如果我尝试例如:

string[1].upper()

我的输出是:

hello world

而不是:

hEllo wold

不知道为什么……

【问题讨论】:

  • 字符串是不可变的,string[1].upper() 创建一个新的单字符大写字符串。你可以用"".join(c.upper() if c in "eo" else c for c in string)做你想做的事。
  • “我的输出”是什么意思? string[1].upper() 返回'E'

标签: python string uppercase


【解决方案1】:

这一行:

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))

【讨论】:

    【解决方案2】:

    要仅大写字符串的一个字母,您必须将字符串从第 n 个位置开始的部分大写,并将其分配回变量:

    string = string[:n] + string[n:].capitalize()
    

    【讨论】:

      【解决方案3】:

      在 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))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-26
        • 1970-01-01
        • 1970-01-01
        • 2021-08-16
        • 2017-03-20
        • 2014-12-21
        • 2015-11-04
        • 2015-05-02
        相关资源
        最近更新 更多