传递列表后如何修复append()错误

时间:2019-05-24 06:06:44

标签: python typeerror

我正在尝试将列表追加到自身,但是它说“正好有一个参数” 我尝试使用其他变量来存储分割线。

 testfile = open(r'''C:\Users\shawa\Desktop\sampleg102.txt''' ,'r')
 print(testfile) 

 word=list
 for line in testfile:
     line = line.lstrip()
     word = word.append([1])
 print(word)

,错误是

E:\vscode.source> python -u "e:\vscode.source\python\countingWords.py"
 <_io.TextIOWrapper name='C:\\Users\\shawa\\Desktop\\sampleg102.txt' 
mode='r' encoding='cp1252'>
Traceback (most recent call last):
   File "e:\vscode.source\python\countingWords.py", line 7, in <module>
    word = word.append([1])
TypeError: append() takes exactly one argument (0 given)

3 个答案:

答案 0 :(得分:0)

要解释第一个错误,请看以下内容:

>>> list
<class 'list'>
>>> word = list
>>> word
<class 'list'>
>>> word = list()
>>> word
<list object at 0x...>

目前,您仅将名称list分配给了名称word。您需要调用list构造函数才能实际创建列表。现在,方法list.append()就地修改列表。它返回None,您无需重新分配。

word = list()
# word = '' works too
for line in testfile:
    line = line.lstrip()
    word.append([1])
print(word)

您的代码目前将打印1的列表。如果您打算附加文件的行,请使用

word.append(line)

请注意,最好使用文字[]空列表语法而不是调用list(),因为这样可以很清楚地了解正在创建的内容。

答案 1 :(得分:0)

如果要在列表中追加行,则需要执行此操作。在您的代码中,您仅将[1]附加到列表单词。

testfile = open(r'''C:\Users\shawa\Desktop\sampleg102.txt''' ,'r')
print(testfile) 

 word=list()
 for line in testfile:
     line = line.lstrip()
     word.append(1) #or word.append(line[1]) according to use case
 print(word)

答案 2 :(得分:0)

您要查找的是word = list()而不是word = list。 list只是一个关键字,list()实例化