首页 > 解决方案 > 列出函数中的附加方法不起作用

问题描述

我在 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()

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

我尝试替换函数:

commas=commas.append(k)

和:

commas=commas+[k]

它有效,但我该如何使用该append方法?为什么会失败?

标签: pythonlistappend

解决方案


本质.append()上不返回新数组。.append()有点像就地函数,其中值附加到数组中。所以你不必返回任何东西。当您说 时commas=commas.append(k),将返回一个新实体,即 NoneType。请留下它commas.append(k)


推荐阅读