|
60鱼币
循环里note1设定为空列表,但是报错显示note1 = None,哪位大佬帮看看是什么问题
filename = 'pins.asc'
note1 = []
data = []
with open(filename, encoding='utf-8') as f:
pinss = f.readlines()
for pins in pinss:
if 'Part' in pins:
pins1 = pins.split(' ')
pins2 = [item for item in pins1 if item.strip()]
pins1[:] = pins2
print(pins1)
part_name = pins1[1]
elif '\n' == pins:
note = ','.join(note)
data = data.append((part_name,note))
note1 = []
else:
pins1 = pins.split(' ')
pins2 = [item for item in pins1 if item.strip()]
pins1[:] = pins2
pins3 = pins1[5]
note1 = note1.append(pins3)
print(pins3)
问题出在 note1 = note1.append(pins3) 和 data = data.append((part_name,note)) 这两行代码上。
在 Python 中,list.append() 方法是原地修改列表(即直接修改原列表而不返回新列表),它的返回值是 None。所以当你执行 note1 = note1.append(pins3) 时,实际上是把 None 赋值给了 note1,导致后续操作报错。
同样的问题也存在于 data = data.append((part_name,note))。
修正后的代码应该是:
python
filename = 'pins.asc'
note1 = []
data = []
with open(filename, encoding='utf-8') as f:
pinss = f.readlines()
for pins in pinss:
if 'Part' in pins:
pins1 = pins.split(' ')
pins2 = [item for item in pins1 if item.strip()]
pins1[:] = pins2
print(pins1)
part_name = pins1[1]
elif '\n' == pins:
note = ','.join(note1) # 这里应该是note1而不是note
data.append((part_name,note)) # 直接调用append,不要赋值
note1 = []
else:
pins1 = pins.split(' ')
pins2 = [item for item in pins1 if item.strip()]
pins1[:] = pins2
pins3 = pins1[5]
note1.append(pins3) # 直接调用append,不要赋值
print(pins3)
主要修改:
移除了 note1 = note1.append(pins3) 中的赋值,改为直接 note1.append(pins3)
移除了 data = data.append((part_name,note)) 中的赋值,改为直接 data.append((part_name,note))
修正了 note = ','.join(note) 应该是 note = ','.join(note1)(假设你想连接的是 note1 列表)
这样修改后应该就不会出现 note1 = None 的错误了。
|
最佳答案
查看完整内容
问题出在 note1 = note1.append(pins3) 和 data = data.append((part_name,note)) 这两行代码上。
在 Python 中,list.append() 方法是原地修改列表(即直接修改原列表而不返回新列表),它的返回值是 None。所以当你执行 note1 = note1.append(pins3) 时,实际上是把 None 赋值给了 note1,导致后续操作报错。
同样的问题也存在于 data = data.append((part_name,note))。
修正后的代码应该是:
python
filename = ' ...
|