list - 无法识别列表中的所有元素
问题描述
我正在尝试读取文本文件中的每 10 行,将行的某些部分添加到列表中,而忽略其余部分。我的 .txt 文件中的每一行都是一个由 29 个元素组成的逗号分隔列表,我line.strip(',')
用来将每一行分隔成一个列表,称为line_list
.
for line in current_file:
if line.startswith('#'):
pass
for linenum, line in enumerate(current_file):
if linenum % 10 == 0:
line_list = line.split(",")
time_list.append(line_list[0])
values.append(line_list[4])
else:
pass
但是,python 似乎并没有识别列表中的所有元素。当我打印len(line_list)
它返回值 29,但不识别任何大于 0 的索引。所以该行time_list.append(line_list[0])
有效,但我得到一个索引超出范围错误values.append(line_list[4])
打印line_list[0]
适用于所有行,当我打印时,line_list
我得到了 29 个逗号分隔值的完整列表。
有任何想法吗?
编辑 感谢评论者我删除了双重迭代,所以更新的代码是
for linenum, line in enumerate(current_file):
if line.startswith('#'):
pass
if linenum % 10 == 0:
line_list = line.split(",")
time_list.append(line_list[0])
values.append(line_list[4])
else:
pass
我仍然收到索引超出范围错误,因为line_list[4]
解决方案
您正在使用line两次 a 变量来循环。这不是一个好的编码习惯,可能会导致奇怪的行为。例如,将第二行变量更改为l:
for line in current_file:
if line.startswith('#'):
pass
for linenum, l in enumerate(current_file):
if linenum % 10 == 0:
line_list = l.split(",")
print(line_list)
time_list.append(line_list[0])
values.append(line_list[4])
else:
pass
推荐阅读
- java - 从 Websphere 连接到数据库缓慢
- r - R中的计数器功能
- google-apps-script - 将工作表复制到另一个电子表格 (Google) 时出现 #REF 错误
- python - 如何使用 webdriver 选择签入和签出
- cryptography - 至少 256 位随机数的 C 库
- c# - 远程 json 的代理调用以避免 CORS 问题
- python-3.x - 如果文件系统中不存在,我如何将图像保存在代码中(通过 pickle、dill 或其他字节码)并保存到文件?
- java - 检索数据时的 Firebase ValueEventListener
- python - Psycopg2:模块对象没有属性“连接”
- android - 如何检查应用程序是如何启动的