小编典典

如何使用python读取文本文件中的数字?

python

我是python编程的新手,正在通过做简单的程序学习python。这是我要执行的操作:如果我有一个包含数字的文本文件:将其说为f1.txt

f1.txt:

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 15


fp = open('f1.txt')
a1=[]
a2=[]
a3=[]
a4=[]
lines = fp.readlines()

for ln in lines[0:len(lines)]:
line=ln.strip().split()
a1=line();

fp.close()

我想在a1中获得第一列,在a2中获得第二列,依此类推。我知道上面的代码可能是错误的,请告诉我哪里出错了以及如何纠正它。特别是我不理解命令’ln.strip()。split()’。有人可以帮忙吗?


阅读 216

收藏
2021-01-16

共1个答案

小编典典

您可以这样做:

a1 = []
a2 = []
a3 = []
a4 = []

with open('f1.txt') as f:
    for line in f:
        data = line.split()
        a1.append(int(data[0]))
        a2.append(int(data[1]))
        a3.append(int(data[2]))
        a4.append(int(data[3]))

因此,首先,我们使用该with语句打开文件。这样可以确保即使出现错误也可以自动关闭文件。这样更好。打开文件时f将是文件句柄。

现在,Python允许我们仅通过遍历文件句柄来遍历文件的各行。因此for line in f将自动遍历所有行。不需要先调用readlines(),并且当然也不需要这样做lines[0:len(lines)],基本上只创建列表的副本-
您也可以遍历lines

现在,在循环内部,我们将这行代码作为一行,并用空格将其分隔-
没有参数str.split将始终执行该操作。str.split返回一个列表,因此我们将其存储在一个额外的变量中。接下来,我们将每一列附加到正确的列表中。当您希望将值转换为数字时,我们会将其转换为整数。

str.strip你提到的基本上起飞字符串的开头或结尾的空白。当我们使用str.split无参数时,多余的空格也将被删除,因此我们实际上并不需要它。

最后,将四个单独的列表存储在单独的变量中很难维护。您可以简单地创建一个列表列表:

a = [[], [], [], []] # A list with four empty lists

然后,在循环内部,您可以追加data[i]a[i]

for i, value in enumerate(line.split()):
    a[i].append(int(value))

当遍历时enumerate,您不仅将获得值(仅遍历列表将获得该值),还将获得索引。因此,使用此方法,我们可以获取分割线内每个元素的索引,然后可以将其自动附加到的正确子列表中a

2021-01-16