亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 292 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號