在python中迭代字符串并替换元素
我试图在两个字符串中搜索匹配的元素。如果字符串有两个位于不同位置的相同元素,我想将“guess”字符串中的元素设为COW。如果字符串中有两个元素位于同一位置,则该元素为布尔 以下是我所拥有的:在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
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()
是字符串上的方法,而不是函数。我不确定字符串元素是什么意思。给出输入字符串的示例会有所帮助,大概就像“我有一幢红色的房子”还有“那是什么房子”会把“房子”弄坏的地方。?