用子串

时间:2016-11-09 19:24:05

标签: python string python-3.x for-loop

我目前遇到的问题是,我需要检查"a"中字母string1的每个实例,并将其替换为substring

例如,假设substring"dragon",如果原始string1"apple",我需要返回"dragonpple"

到目前为止,我的尝试是:

def (string1, substring):

     new_string= " "

     for letter in string1:
           if letter ! = "a": 
              new_string.append(letter)
           elif letter = "a":
               a = substring  

我真的不知道如何构建这个,但这是我的一般思维过程。我不确定如何删除字母"a"并将其替换为substring而不会破坏字符串本身。

此外,我无法使用索引或.remove方法。非常感谢帮助。

1 个答案:

答案 0 :(得分:5)

这里有很多问题;让我们分解它们而不会过多地改变原始代码:

  • 您的功能定义缺少名称,请正确定义名称。例如:

    def replace_a(string_a, substring): ...
    

    我猜这可能是一个复制粘贴遗漏。

  • if letter ! = "a":SyntaxError! =不会被解释为!=(但是会被解释为两个独立的运算符!=)不幸的是,这也需要修复。
  • elif letter = "a":是另一个SyntaxError;不应将赋值语句与等式检查混淆,即=与使用==不相似。
  • new_string.append(letter)TypeError;方法append没有为字符串定义,字符串是不可变,追加是一种改变对象的方法。 append可以使用list
  • a = substring做得不多:-(。您已分配给a,然后根本不使用它。
  • 最后,你不会返回任何内容。即使您的函数正确创建了字符串,也无法将其恢复,因为您不使用return语句。

你可以考虑的一种方法是使用一个字符串列表并改变它;列表是可变的,所以改变你的心愿。然后,你join最后的列表,并从其中的所有字符中返回一个字符串:

def replace_a(string1, substring):
    new_string= []
    for letter in string1:
        if letter != "a": 
            new_string.append(letter)
        elif letter == "a":
            new_string.append(substring)
     return "".join(new_string)

这会产生你想要的结果。

如果您不能使用list,请将其变更,然后join,您可以逐步构建新字符串:

def replace(string1, substring):

     new_string= ""

     for letter in string1:
           if letter != "a": 
              new_string += letter
           elif letter == "a":
               new_string += substring
     return new_string

这又与之前基于list的函数类似,但依赖于+=,它通过将new_string中的旧值与letter或{{substring相结合来创建新字符串1}}基于条件。

当然,字符串上的.replace可以解决问题,因为@yper建议的评论可以解释你的尝试没有实现你所追求的目标。

你很接近但遗漏了几件基本的东西,我建议你看一下Python Tutorial。 : - )