我正在使用具有以下结构的文本文件:
printer_name:
description = printer_description
library = printer_library
form = printer_form
对于数据库中的每台打印机,都会重复此结构。
我正在处理的python脚本的所需输出如下所示:
'printer_name', 'printer_description', 'printer_library', 'printer_form'
'printer_name', 'printer_description', 'printer_library', 'printer_form'
...and so on for every printer record in the text file...
此时,在尝试将每个项目收集到每个记录的列表对象时,我一直遇到构建所需输出的问题。
这是我一直在使用的最新版本:
f = input('Enter file name:')
fh = open(f)
lst = list()
for line in fh:
line = line.strip()
if len(line) == 0: continue
elif line.startswith('description'):
descList = line.split()
description = ' '.join(descList[2:])
lst.append(description)
elif line.startswith('library'):
libList = line.split()
libraryItem = libList[2:]
library = libraryItem[0]
lst = lst.append(library)
elif line.startswith('form'):
formList = line.split()
formItem = (formList[2:])
form = formItem[0]
lst = lst.append(form)
else:
printer = line[:-1]
lst = lst.insert(0, printer)
print(lst)
此脚本返回Python的属性错误,指示' NoneType'对象没有属性'追加'。这似乎是指我的第一个elif块中的lst.append(description)语句,但是,当我注释掉剩余的elif块并以这种方式运行脚本时,我能够生成一个描述项列表。 / p>
我想是为了获得一个列表'在我获得所需输出的路上,我需要定位print(lst)语句,以便为每个已经构建到自己的行中的打印记录调用它,但我&#39那个方面也遇到了麻烦。
任何人都愿意并能够为我捅这个谜题吗?
我真的很感激!
答案 0 :(得分:1)
方法append
返回None
,因此当您尝试lst = lst.append(library)
时,将变量设置为None
全部替换:
lst = lst.append(library)
lst = lst.insert(0, printer)
到
lst.append(library)
lst.insert(0, printer)
如果您需要list
lines
你可以试试逻辑:
lines = list()
for line in fh:
lst = list()
# You code
lines.append(lst)