【问题标题】:How to replace characters in a string in python如何在python中替换字符串中的字符
【发布时间】:2015-10-14 07:43:48
【问题描述】:

如何替换字符串中我们知道python中确切索引的字符?

例如:名称 = "ABCDEFGH" 我需要将所有奇数索引位置字符更改为“$”字符。

    name = "A$C$E$G$"

(考虑索引从 0 开始)

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以使用enumerate 循环遍历字符串并在每次迭代中获取索引,然后根据您的逻辑,您可以保留正确的元素:

    >>> ''.join([j if i%2==0 else '$' for i,j in enumerate(name)])
    'A$C$E$G$'
    

    【讨论】:

    • 您可以使用'$' if i%2 else j 稍微缩短它。
    【解决方案2】:

    还有'$'.join(s[::2]) 只取偶数字母,将它们转换为字符列表,然后交错 $

     ''.join(['$' if i in idx else s[i] for i in range(len(s))])
    

    适用于任何索引数组 idx

    【讨论】:

    • 您甚至不需要list() 电话。 :)
    • 问题是基于索引的,所以这不是正确的方法!
    • 一般来说,对于这种操作,转换为列表,操作列表中的索引,然后连接回一个字符串,但在这个具体的例子中,正如你展示的那样,它完美地折叠成一个连接和用跳过切片。
    • @Kasramvd,这是一个XY Problem
    • @TigerhawkT3 是的,有点!但不完全!
    【解决方案3】:

    您可以通过索引引用字符串元素并形成一个新字符串。像这样的东西应该可以工作:

    startingstring = 'mylittlestring'
    nstr = ''
    for i in range(0,len(startingstring)):
        if i % 2 == 0:
                nstr += startingstring[i]
        else:
                nstr += '$'
    

    然后随心所欲地使用nstr

    【讨论】:

    • 其他解决方案使用join 列表的原因是为了避免这种情况——每次使用+= 时都会创建一个新的字符串对象。
    • 我不知道。我认为它实际上是附加到现有字符串的。操作的细节是什么?它是否 (1) 创建一个由旧的 nstr 与新字符连接的新字符串,(2) 删除旧的 nstr 和 (3) 将新字符串移动到 nstr
    • 您不能追加到现有字符串,因为字符串在 Python 中是不可变的。
    • 差不多,是的。 Python 不是唯一这样的语言,PHP 和 Java 是相同的示例。 Perl 是一个奇怪的东西(在很多方面)。
    • 很高兴知道。感谢您的帖子。
    【解决方案4】:
    name = "ABCDEFGH"
    nameL = list(name)
    
    for i in range(len(nameL)):
        if i%2==1:
            nameL[i] = '$'
    
    name = ''.join(nameL)
    print(name)    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-01
      • 2020-10-06
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 2016-08-03
      相关资源
      最近更新 更多