如果在word1中找到一个字母并且在word2中,则从word2中删除字母

时间:2014-02-23 20:31:46

标签: python

在我用Python编写的程序中,我想说:

如果在单词1中找到一个字母并且在word2中:

删除word2中的字母

我试过了:

for i in range(len(word1)):
    if word1[i] in word2:
       del word1[i] in word2

当我这样做时,语法错误来自最后一行中的一词

4 个答案:

答案 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.findstring 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'