在我用Python编写的程序中,我想说:
如果在单词1中找到一个字母并且在word2中:
删除word2中的字母
我试过了:
for i in range(len(word1)):
if word1[i] in word2:
del word1[i] in word2
当我这样做时,语法错误来自最后一行中的一词。
答案 0 :(得分:2)
del
仅用于删除Python中的名称(变量)。
如果要删除字符串中的单个字符,则应使用str.replace
。另请注意,您可以迭代字符串的字符而不是遍历索引:
for char in word1:
if char in word2:
word2 = word2.replace(char, '')
当然,replace
如果无法找到匹配项,则实际上不会替换任何内容,因此您只需删除if
:
for char in word1:
word2 = word2.replace(char, '')
最后,word1
可能不止一次包含字符,在这种情况下,您会尝试多次删除单个字符。相反,您可以迭代word1
的唯一字符:
for char in set(word1):
word2 = word2.replace(char, '')
答案 1 :(得分:0)
del
关键字没有按照你的想法在python中执行。要从字符串中删除,请尝试类似
i = 5
word = 'abcdefghijk'
#delete the i'th element
word = word[0:i] + word [i+1:]
在python
中使用del
关键字的理由很少
答案 2 :(得分:0)
你的del line使用了错误的语法。 del不能用于字符串中的字符。假设word1和word2是字符串..你不能只删除字符串中的字母。但是,您可以使用str.replace():
for c word1:
if c in word2:
word2 = word2.replace(c, '')
您必须创建一个新字符串才能执行此操作,因为只需执行word2.replace(c, '')
就不会实际修改word2。
因此word2 =
位
答案 3 :(得分:0)
str.translate方法非常适合此任务。如果您将 None 作为第一个参数传递,则第二个参数列出要删除的所有字符:
>>> 'clementine'.translate(None, 'welcome')
'ntin'
>>> 'apple'.translate(None, 'orange')
'ppl'
问。问题的变体:if word1 = 'heli' and word2 = 'jello', i only want it to replace one 'l' from 'jello', what do I do.
A。使用str.find和string slicing一次隔离并删除一个字符(不要使用 str.replace 多次替换):
>>> word1 = 'heli'
>>> word2 = 'jello'
>>> for c in word1:
i = word2.find(c)
if i != -1:
word2 = word2[:i] + word2[i+1:]
>>> word2
'jlo'