繁体   English   中英

Python3 - 列表索引超出范围 - 从文件中提取数据

[英]Python3 - list index out of range - extracting data from file

我想从文件中提取数据并使用“for 循环”更改条目的值。

f = open(r"C:\Users\Measurement\LOGGNSS.txt", "r")
x=0
content = [[],[]]
for line in f:
    actualline = line.strip()
    content.append(actualline.split(","))
    x+=1
f.close

print(x)
for z in range(x):
    print(z)
    print(content[z][1])

IndexError:列表索引超出范围

使用实际值而不是变量 'z' 可以正常工作。 但是我需要更改整个二维数组中的所有第一个条目。 为什么它不起作用?

你用两个空数组初始化你的内容,所以这两个都找不到第一个索引( [1] ),只需用一个空数组初始化它

content = []

您的代码有几个问题。 首先,使用with 语句正确打开/关闭文件。 然后,您不需要使用像x这样的变量来跟踪行数,只需使用enumerate()代替!

下面是我将如何重构您的代码以使其更精简和更具可读性。

input_file = r"C:\Users\Measurement\LOGGNSS.txt"
content = []

with open(input_file, 'r') as f:
    for line in f:
        clean_line = line.strip().split(",")
        content.append(clean_line)

for z, data in enumerate(content):
    print(z,'\n',data)

请注意,您可以在一个循环中读取文件时打印内容。

with open(input_file, 'r') as f:
    for z, line in enumerate(f):
        clean_line = line.strip().split(",")
        content.append(clean_line)
        print(z,'\n', clean_line)

最后,如果您正在处理一个简单明了的 csv 文件,那么请使用标准库中的csv 模块

import csv

with open(input_file, 'r') as f:
    content = csv.reader(f, delimiter=',')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM