函数内的Python列表附加方法不起作用

问题描述 投票:0回答:2

我在txt文件中有一个数据表。我用[]将它带入Python

a1_file=open(file_path,'r')

然后我转到第二行以跳过标题

a1_file.readline()
line_string=a1_file.readline()

作为逗号分隔的函数,我想获得一个列表,其中存储了前5个逗号的位置。为此,我正在尝试使用此功能

def commas_in_line(table_row):
    commas=[]
    while len(commas) <5:
        if len(commas)==0:
            i=0
        else:
            i=commas[-1]+1
        k=table_row.find(',',i)
        commas=commas.append(k)
    return commas

我通过以下方式调用函数

commas_in_line(line_string)

代码报告此错误

Traceback (most recent call last):
  File "<pyshell#52>", line 1, in <module>
    commas_in_line(line_string)
  File "C:/1WritingPrograms.py", line 11, in commas_in_line
    while len(commas) <5:
TypeError: object of type 'NoneType' has no len()

with

>>> line_string
'30/04/2020,30,4,2020,122,0,Afghanistan,AF,AFG,37172386,Asia\n'

我尝试替换为函数

commas=commas.append(k)

commas=commas+[k]

并且它有效,但是如何使用append方法?为什么会失败?

我在txt文件中有一个数据表。我使用a1_file = open(file_path,'r')将其带入Python,然后转到第二行以跳过标题a1_file.readline()line_string = a1_file.readline()...

python list append
2个回答
0
投票

您使用以下方法将值添加到python列表中:


0
投票

基本上.append()不会返回新数组。 .append()有点像Inplace函数,其中值被附加到数组中。因此,您不必返回任何东西。当您说commas=commas.append(k)时,将返回一个新的实体,即NoneType。请直接将其保留为commas.append(k)

© www.soinside.com 2019 - 2024. All rights reserved.