gpt4 book ai didi

PYTHON - 从文件中读取单行

转载 作者:太空宇宙 更新时间:2023-11-04 07:42:20 25 4
gpt4 key购买 nike

我是几个小时的 python 新手,我正在尝试编写一个脚本,该脚本从一个文件(名为“peaks.dat”)中读取一组 x、y 坐标并将它们填充到一个列表(类类型);我正在定义以下内容:

class point():
def _init_(self,x=None,y=None,k=None,f=None):
self.x=0 # x coordinate
self.y=0 # y coordinate
self.k=0 # I need these for later stuff
self.f=-1 # I need these for later stuff

但后来我找不到任何方法从文件中的一行(即,仅来自两列之一的元素)而不是整行“挑选”单个元素。有这种事吗?

无论如何,我尝试将我的列拆分为两个不同的文件 x.dat 和 y.dat,但后来我完全不知道如何从文件中分别填充我的“点”类型列表的 x 和 y 字段。我试过了

f=open('x.dat','r')
mylist=[]
for line in f:
mylist.append(point(line, , , )) # wrong syntax D:
f.close()

for data in mylist:
print i.x

计划稍后对 y.dat 文件进行相同的处理,但在很多层面上似乎都是错误的。

附注如果你想举个例子,我来自一些 C++。

编辑:peaks.dat 只是三列(我只需要前两列)数字,类似于

1.2   1.6   0.4
1.5 2.1 0.3
1.1 1.0 0.5

等等

x.dat(或 y.dat)是单行数字。

最佳答案

根据文件的格式,您可以使用 csv 模块,或者使用 str.split() 函数。

对于一行中以空格分隔的值,使用 str.split():

points = []

with open(inputfilename) as infile:
for line in infile:
row = [int(i) for i in line.split()]
# row is now a list of integers.
points.append(point(*row))

对于其他格式,通常是 csv module是最好的选择:

import csv

points = []

with open(inputfilename, 'rb') as infile:
reader = csv.reader(infile, delimiter='\t') # tab delimited file
for row in reader:
row = [int(i) for i in row]
# row is now a list of integers.
points.append(point(*row))

要只读取两行,请使用 next() 两次; csv 版本:

    for _ in range(2):
row = [int(i) for i in next(reader)]
# row is now a list of integers.
points.append(point(*row))

next() 从迭代器中获取下一项; infile 对象和 reader 对象都是生成文件行或 CSV 行的迭代器。

或者,使用 itertools.islice() utility :

for row in islice(reader, 2):  # only yield the first two rows.

关于PYTHON - 从文件中读取单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17148489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com