在python中迭代字符串并替换元素

在python中迭代字符串并替换元素,python,string,replace,indexing,Python,String,Replace,Indexing,我试图在两个字符串中搜索匹配的元素。如果字符串有两个位于不同位置的相同元素,我想将“guess”字符串中的元素设为COW。如果字符串中有两个元素位于同一位置,则该元素为布尔 以下是我所拥有的: if index(number,i) in guess and not index(guess,i) == index(guess,i): replace(index(guess,i),'COW') if index(guess,i) == ind

我试图在两个字符串中搜索匹配的元素。如果字符串有两个位于不同位置的相同元素,我想将“guess”字符串中的元素设为COW。如果字符串中有两个元素位于同一位置,则该元素为布尔

以下是我所拥有的:

        if index(number,i) in guess and not index(guess,i) == index(guess,i):
            replace(index(guess,i),'COW')

        if index(guess,i) == index(number,i):
            replace(index(guess,i),'BULL')

我不确定是否正确使用了index。

首先,您需要使用
index()
replace()
作为字符串方法,就像Martijn在评论中说的那样

这是这样的:
guess.index(i)
在字符串
guess
中查找
i
的索引

您可能希望检查与
index()
相同的操作,但在未找到子字符串时不会引发异常

还要注意,您正在查看
index()
的结果是否在字符串
guess
中。这是一个错误,因为整数不能在字符串中
index()
返回一个整数

然后考虑你正在陈述<代码>…而不是猜测。索引(i)=猜测。索引(i):(我修正了

索引
代码),这毫无意义,因为它们当然是相等的!他们是一样的

最后,您错误地使用了
replace
。 从中,
replace
将字符串作为第一个参数,而不是索引!试着这样使用它:
guess=guess.replace(i,'BULL')
。这将更改
guess
,将所有出现的
i
替换为字符串
'BULL'


这里我不关心您的实际算法,只关心您的基本错误。

我不会使用
index()
方法。相反,我会将字符串的元素转换为一个列表,然后说:

listOne = [hello,goodbye,adios, shalom]
listTwo = [hello,adios,arrivaderci]

def cowbull(L1, L2):
    for i in range(len(L1)):
        if L1[i] in L2:
            if L1[i] == L2[i]:
                L1[i] = 'BULL'
                L2[i] = 'BULL'
            else:
                L1[i] = 'COW'
                L2[L1[i]] = 'COW'

这正是我将要做的,但是使用您和William的代码的方式也可以很好地工作。我只是习惯了这样做,它可能没有他的效率高,但通常效果很好。

index()
replace()
是字符串上的方法,而不是函数。我不确定字符串元素是什么意思。给出输入字符串的示例会有所帮助,大概就像“我有一幢红色的房子”还有“那是什么房子”会把“房子”弄坏的地方。?