猿问

PYTHON-从文件中读取单行

我是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文件设置为相同,但是在许多级别上似乎是错误的。


ps如果您要举一些例子,我来自一些C ++。


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


1.2   1.6   0.4

1.5   2.1   0.3

1.1   1.0   0.5

ETC。


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


LEATH
浏览 263回答 3
3回答

慕慕森

用于str.split在一行上拆分数据,str.split返回字符串列表。例子:>>> strs = "1.2   1.6   0.4">>> strs.split()['1.2', '1.6', '0.4']#use slicing as you need only first two items>>> [float(x) for x in strs.split()[:2]] [1.2, 1.6]如果只需要每行的前两列:mylist=[]with open('x.dat') as f:   for line in f:       #apply int to the items of `str.split` to convert them into integers       x, y = [float(z) for z in line.split()[:2]]       mylist.append(Point(x, y))如果您只想读取前两行:mylist=[]with open('x.dat') as f:   rows = 2   for _ in xrange(rows):       line = next(f)       x, y, k = [float(z) for z in line.split()]       mylist.append(Point(x, y, k))对类定义进行一些更改:class point():   def __init__(self,x = None,y =None,k =None,f =None):      self.x = 0 if x is None else x  #assign default value only if the value was not passed      self.y = 0 if y is None else y      self.k = 0 if k is None else k      self.f = -1 if f is None else f
随时随地看视频慕课网APP

相关分类

Python
我要回答