【问题标题】:how do you change a specific number of a character in python你如何在python中更改特定数量的字符
【发布时间】:2013-12-08 18:24:52
【问题描述】:

我希望能够替换字符串的一部分,但我不需要它是要替换的特定字符,而是我想替换字符串的最后一部分。像 s[-1]。那我该怎么做呢?

【问题讨论】:

    标签: python string replace numbers


    【解决方案1】:

    字符串是不可变的,因此您不能就地“替换”字符。您将需要创建一个新字符串(通过对旧字符串进行切片并与任何内容连接),然后将其分配给某个东西,也许是在您的旧引用上。

    foo = 'foo'
    
    foo[:-1] + 'x'
    Out[31]: 'fox'
    
    foo
    Out[32]: 'foo'
    
    foo = foo[:-1] + 'x'
    
    foo
    Out[34]: 'fox'
    

    【讨论】:

      【解决方案2】:

      我认为最简单的解决方案是使用Explain Python's slice notation 并将字符串切片到您想要的位置。然后,你可以添加一个新的结局。

      请看下面的演示:

      >>> mystr = "abcde"
      >>> mystr[:-1]+"x"
      'abcdx'
      >>>
      

      【讨论】:

        【解决方案3】:

        好吧,如果它只是最后一部分,可以使用以下内容:

        new_string = old[:x] + "new bit"
        

        这将返回第一部分的副本,并将其与新部分连接起来。但是,如果新位与要替换的部分长度相同,则可以避免复制。

        【讨论】:

          【解决方案4】:

          这是一种方法:

          >>> a = "my damn strin"
          >>> b = a[:-1]
          >>> b = b + 'k'
          >>> b
          'my damn strik'
          >>> 
          

          【讨论】:

            【解决方案5】:

            进行字符串切片和连接可能是最好的方法,但如果您关心的话,这里有一种替代方法可能会更快。它使用一个 unsigned char 数组,本质上是一个可变字符串。

            #!/usr/local/cpython-3.3/bin/python
            
            import array as array_mod
            
            string = b'sequence of characterx'
            
            array = array_mod.array('B', string)
            
            print(array)
            
            array[-1] = ord(b's')
            
            print(array)
            

            HTH

            【讨论】:

              猜你喜欢
              • 2019-01-11
              • 1970-01-01
              • 1970-01-01
              • 2017-08-29
              • 2022-01-25
              • 2016-01-08
              • 1970-01-01
              • 2012-03-02
              • 2014-09-28
              相关资源
              最近更新 更多