为了账号安全,请及时绑定邮箱和手机立即绑定

PYTHON-从文件中读取单行

PYTHON-从文件中读取单行

LEATH 2021-03-30 07:15:27
我是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.41.5   2.1   0.31.1   1.0   0.5ETC。x.dat(或y.dat)是单行数字。
查看完整描述

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

用于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


查看完整回答
反对 回复 2021-04-02
  • 3 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信