Python-从文本文件中读取数字并放入lis

2024-04-16 13:43:30 发布

您现在位置:Python中文网/ 问答频道 /正文

所以就像标题上说的,我开始学习一些python,我在学习这项技术时遇到了困难。我需要完成的是读入一些数字并将它们存储在一个列表中。文本文件如下所示:

0 0 3 50

50 100 4 20

基本上,这些是Python龟用来制作形状的坐标和方向。我把那部分记下来了,唯一的问题是要用正确的格式。所以我想不通的是如何将这些数字从文件中放入[ [0, 0, 3, 50], [50, 100, 4, 20] ] 一个列表,每四个坐标都是一个大列表中的列表。

这是我的尝试,但正如我所说,我需要一些帮助-谢谢。

polyShape=[]
infile = open(name,"r")
num = int(infile.readline(2))
while num != "":
    polyShape.append(num)
    num = int(infile.readline(2))
infile.close()

Tags: name标题列表readline格式数字open方向
3条回答
with open('data.txt') as f:
    lis=[map(int,x.split()) for x in f if x.strip()]   # if x.strip() to skip blank lines

   #use list(map(int,x.split()))  in case of python 3.x

这就是map()的工作原理:

>>> map(int,'1 2 3 4'.split())
[1, 2, 3, 4]

假设输入文件中实际上没有空行:

with open(name, "r") as infile:
    polyShape = [map(int, line.split()) for line in infile]

解释:map(int, line.split())分割每个line,并将每个部分转换为int。构造[X for Y in Z]是一个列表理解,它反过来将map映射到文件的所有行,并在列表中返回结果。

如果您现在觉得这太复杂了,那么map(int, line.split())是主要的带回家信息。

with open('data.txt') as f:
    polyShape = []
    for line in f:
        line = line.split() # to deal with blank 
        if line:            # lines (ie skip them)
            line = [int(i) for i in line]
            polyShape.append(line)

会给你

[[0, 0, 3, 50], [50, 100, 4, 20]]

这将适用于包含空行(或不包含空行)的文件。

使用with构造将在完成或遇到异常时自动为您关闭文件。

相关问题 更多 >