Python:迭代时替换单词

时间:2016-08-08 12:07:52

标签: python python-3.x

我不确定为什么这段代码不起作用。我试图迭代一个单词列表的副本,并用另一个给定的单词替换单词。相反,我得到了无效的语法错误。我现在明白了(通过阅读这里的其他帖子),在迭代时修改列表是不好的做法,因此我使用[:]创建了一个副本。这是我的代码:

def change(z): words = z.split() for i in words[:]: if 'because' in i: words.replace(i, 'as') print(words) change(input("Line: "))

错误:

Traceback (most recent call last): File "C:/Users/Jarrod/Desktop/py/NCSS2016Adv/kindleNook.py", line 9, in <module> change(input("Line: ")) File "<string>", line 1 is as ^ SyntaxError: invalid syntax

我的语法不正确的任何线索都将非常感激。

2 个答案:

答案 0 :(得分:-2)

您使用的是Python 2.x还是3.x?如果2.x:

Python 2内置input()函数将尝试将输入字符串解释为python代码:https://docs.python.org/2/library/functions.html#input

因此,如果您输入自然语言,则显然会引发无效的语法错误。

改为使用raw_input()

答案 1 :(得分:-3)

您应该提供一个实际上会产生错误的代码,如评论中的其他人所述。

无论如何,在您的代码中,i将是一个字符串,而不是一个列表,因为您正在使用循环从split迭代列表。那么,也许你应该使用if i == 'because'而不是if 'because' in i