Py学习  »  Python

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

mat • 5 年前 • 1377 次点击  

我想从文件中提取数据,并用“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])

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56022
 
1377 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Sayse
Reply   •   1 楼
Sayse    5 年前

[1] ),只需使用空数组初始化它

content = []
alec_djinn
Reply   •   2 楼
alec_djinn    5 年前

你的代码有几个问题。 首先,使用 with statement 那么,您不需要使用如下变量 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 module 从标准库。

import csv

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