Python 如何替换字符串中的子字符串?

Python 如何替换字符串中的子字符串?,python,replace,Python,Replace,我正在尝试编写一个程序来更改字符,如果在名为st的字符串中发现ch,我将用“!”替换它 我编写了一个程序,但由于某些原因,此代码不能替换一个字母,例如,如果我输入: st=a ch=a 我没有得到“!”的输出相反,我得到了“a”,但我不希望我想要的是“a!” 我的代码是 st = raw_input("String: ") ch = raw_input("character: ") def replace_char(st,ch): if st.find(ch): ne

我正在尝试编写一个程序来更改字符,如果在名为st的字符串中发现ch,我将用“!”替换它

我编写了一个程序,但由于某些原因,此代码不能替换一个字母,例如,如果我输入: st=a ch=a

我没有得到“!”的输出相反,我得到了“a”,但我不希望我想要的是“a!”

我的代码是

st = raw_input("String: ")
ch = raw_input("character: ")


def replace_char(st,ch):
    if st.find(ch):
        new = st.replace(ch,'!')
        print new
        return new
    elif len(st)==len(ch):
        if ch==st:
            print"!"
        else:
            print st
    else:
        print st
        return st

replace_char(st,ch)

请帮助我不要从Python文档中的代码中了解我做错了什么或遗漏了什么:

它没有说明find()返回True或False。这是你的问题

对于子字符串搜索,最好使用

if some_string in some_otherstring:
    do_something()
st.find(ch)返回ch位于st not True/False的位置。因为在Python中,如果==True为True,您的程序在某些情况下可以工作…:) 考虑STR==‘a’和CH==‘a’,第一个条件失败,但第二个条件只有当STR和CH具有相同的长度时才起作用。我猜你的书里还有别的东西。 在我的电脑中,除了在st中首先搜索ch的情况外,您的程序可以工作,如下所示:st='afsdf'ch='a'。 更好的解决方案如下:

st.replace(ch, '!')

它在任何情况下都能工作。

使用合理的主题->Downvote.str.find()不返回True或False,它返回找到的字符串的索引。很抱歉,这是旧的,我更改了它,但仍然无法工作…你没有阅读答案我正在阅读你的评论,我摆脱了真实的部分,现在它应该工作得更好,但它不能正常工作
st.replace(ch, '!')