【问题标题】:Replacing all instances of a character in a string using python使用python替换字符串中字符的所有实例
【发布时间】:2014-03-14 16:02:36
【问题描述】:

试图用新字符替换字符串中给定字符的所有实例。以下是我的代码:

def main():
    s='IS GOING GO'
    x='I'
    y='a'

   rep_chr(s,x,y)


def find_chr(s,char):
    i=0
    for ch in s:
        if ch==char:
            return (i)
            break        
        i+=1
    return -1
def rep_ch(s,x,y):
    result=""

    for char in s:

        if char == x:
            print(result=result+ y )        
        else:
            return char   
main()

编辑了代码,但仍将第一个“I”替换为“a”并忽略第二个“I”。有什么建议吗?

【问题讨论】:

  • 您似乎打算使用range(len(s1)) 而不是range(s1)
  • 我不能使用任何 python 方法。我基本上必须从头开始构建它。
  • 这是因为你在做作业吗?否则没有理由不使用 python 方法。
  • @cobra range 是一个python方法:)
  • 实际上,从技术上讲,[] 运算符是一种方法,因为要使用它,它会在内部调用 __getitem____getslice__ 方法。

标签: python string python-3.x replace


【解决方案1】:
for i in range(s1):

这里s1 是一个字符串,您将它传递给range 函数,该函数只需要数字作为参数。那就是问题所在。您应该改用字符串的长度

for i in range(len(s1)):

但是,你的实际问题可以用str.replace解决,像这样

s='IS GOING GO'
x='I'
y='a'
print(s.replace(x, y))

如果你想在没有str.replace的情况下解决,你可以这样做

s, result, x, y ='IS GOING GO', "", "I", "a"
for char in s:
    if char == x:
        result += y
    else:
        result += char
print(result)

输出

aS GOaNG GO

同样的程序也可以这样写

s, result, x, y ='IS GOING GO', "", "I", "a"
for char in s:
    result += y if char == x else char
print(result)

【讨论】:

  • 对不起,不能使用任何python方法。
  • 我更改了代码,但它只将第一个 'I' 替换为 'a' 而忽略了第二个 'I'。
  • @cobra 请编辑问题并使用更改后的代码进行更新。
  • 非常感谢您的意见。它帮助很大。
猜你喜欢
  • 1970-01-01
  • 2021-08-16
  • 2011-09-29
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多