【问题标题】:How do I replace a string at a index in python? [duplicate]如何在python中的索引处替换字符串? [复制]
【发布时间】:2021-05-31 03:24:50
【问题描述】:

所以我已经知道如何删除这样的索引:

i = "hello!"
i= i[:0] + i[1:]

print(i)
'ello!'

但是我该如何替换它呢? 所以也许我现在想在旧的 h 所在的位置放一个 H 但如果我这样做: i[0] ="H" 我收到此错误:

Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 我[0] =“H” TypeError: 'str' 对象不支持项目分配

我该如何解决这个问题?

【问题讨论】:

标签: python python-3.x string replace


【解决方案1】:

字符串在 Python 中是不可变的,因此不能像 i[0] = 'H' 那样赋值。您可以做的是将字符串转换为可变的列表,然后您可以在某个索引处分配新值。

i = "hello!"
i_list = list(i)

i_list[0] = 'H'

i_new = ''.join(i_list)

print(i_new)
Hello!

【讨论】:

    【解决方案2】:

    不创建列表你也可以这样做:

    i = "hello!"
    i = "H" + i[1:]
    

    更笼统的:

    def change_letter(string, letter, index):  # note string is actually a bad name for a variable
        return string[:index] + letter + string[index+1:]
    
    s = "hello!"
    s_new = change_letter(s, "H", 0)
    print(s_new)
    # should print "Hello!"
    

    还要注意有一个内置函数.capitalize()

    【讨论】:

    • 我也可以这样做而不是创建一个新变量:s = change_letter(s,"H",0) ??
    • 当然可以。将返回值存储在哪个变量中无关紧要!
    【解决方案3】:

    这是post的副本

    如上所述,您必须从字符串中创建一个列表并通过从该列表中选择一个项目并重新分配一个新值然后在循环中重建字符串来更改字符。

    >>> s = list("Hello zorld")
    >>> s
    ['H', 'e', 'l', 'l', 'o', ' ', 'z', 'o', 'r', 'l', 'd']
    >>> s[6] = 'W'
    >>> s
    ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
    >>> "".join(s)
    'Hello World'
    

    【讨论】:

      【解决方案4】:
      i = "hello!"
      print(i)  ## will print hello!
      i = "H" + i[1:]
      print(i) ## will print Hello!
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-26
        • 2013-03-04
        • 1970-01-01
        • 2016-12-15
        • 1970-01-01
        • 2012-08-31
        • 2011-10-20
        相关资源
        最近更新 更多