第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

解析文本文件中的數(shù)據(jù)

解析文本文件中的數(shù)據(jù)

翻閱古今 2021-03-29 14:38:17
我有一個文本文件,其內(nèi)容如下:******** ENTRY 01 ********ID:                  01Data1:               0.1834869385E-002Data2:              10.9598489301Data3:              -0.1091356549E+001Data4:                715然后是一個空行,并重復(fù)更多類似的塊,所有塊都具有相同的數(shù)據(jù)字段。我正在向Python移植C ++代碼,并且某個部分逐行獲取文件,檢測文本標(biāo)題,然后檢測每個字段文本以提取數(shù)據(jù)。這看起來根本不是一個智能代碼,而且我認(rèn)為Python必須具有一些庫才能輕松解析此類數(shù)據(jù)。畢竟,它幾乎看起來像CSV!有什么想法嗎?
查看完整描述

3 回答

?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗 獲得超3個贊

my_file:


******** ENTRY 01 ********

ID:                  01

Data1:               0.1834869385E-002

Data2:              10.9598489301

Data3:              -0.1091356549E+001

Data4:                715


ID:                  02

Data1:               0.18348674325E-012

Data2:              10.9598489301

Data3:              0.0

Data4:                5748


ID:                  03

Data1:               20.1834869385E-002

Data2:              10.954576354

Data3:              10.13476858762435E+001

Data4:                7456

Python腳本:


import re


with open('my_file', 'r') as f:

    data  = list()

    group = dict()

    for key, value in re.findall(r'(.*):\s*([\dE+-.]+)', f.read()):

        if key in group:

            data.append(group)

            group = dict()

        group[key] = value

    data.append(group)


print data

打印輸出:


[

    {

        'Data4': '715',

        'Data1': '0.1834869385E-002',

        'ID': '01',

        'Data3': '-0.1091356549E+001',

        'Data2': '10.9598489301'

    },

    {

        'Data4': '5748',

        'Data1': '0.18348674325E-012',

        'ID': '02',

        'Data3': '0.0',

        'Data2': '10.9598489301'

    },

    {

        'Data4': '7456',

        'Data1': '20.1834869385E-002',

        'ID': '03',

        'Data3': '10.13476858762435E+001',

        'Data2': '10.954576354'

    }

]


查看完整回答
反對 回復(fù) 2021-04-01
?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗 獲得超9個贊

一個非常簡單的方法可能是


all_objects = []


with open("datafile") as f:

    for L in f:

        if L[:3] == "***":

            # Line starts with asterisks, create a new object

            all_objects.append({})

        elif ":" in L:

            # Line is a key/value field, update current object

            k, v = map(str.strip, L.split(":", 1))

            all_objects[-1][k] = v


查看完整回答
反對 回復(fù) 2021-04-01
  • 3 回答
  • 0 關(guān)注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號