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

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

Python 3 中的雙行循環搜索?

Python 3 中的雙行循環搜索?

拉莫斯之舞 2023-10-18 11:07:42
我正在使用 Python 3,我需要從文件中提取數據。數據示例如下:ENERGY_BOUNDS   1.964033E+07  1.733253E+07  1.491825E+07  1.384031E+07  1.161834E+07  1.000000E+07  8.187308E+06  6.703200E+06  6.065307E+06  5.488116E+06  4.493290E+06  3.678794E+06  3.011942E+06  2.465970E+06  2.231302E+06  2.018965E+06GAMMA_INTERFACE     0EIGENVALUE   1.219034E+00N,2N  1.191994E+00  1.535081E+00  1.543891E+00  1.413861E+00  1.181815E+00  6.174152E-01  1.302440E-02  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00MACRO      1SIGABS  -3.826074E-03 -3.707513E-04  2.610351E-03  6.961084E-03  7.832982E-03  7.512567E-03  1.018417E-02  1.276596E-02  9.148128E-03  8.828235E-03  8.527789E-03  7.514346E-03  7.544248E-03  7.801064E-03  7.724884E-03  7.047571E-03  5.280749E-03  3.999751E-03  3.821688E-03  3.748186E-03  3.712753E-03  3.591795E-03  3.390300E-03  3.180354E-03SIGTRAN   7.513455E-02  8.061355E-02  8.377954E-02  8.787775E-02  9.114071E-02  9.170817E-02  9.440786E-02  9.535947E-02  1.010975E-01  1.035364E-01  1.160553E-01  1.290131E-01  1.197249E-01  1.151962E-01  1.298934E-01  1.375417E-01  1.428861E-01  1.715100E-01  1.627465E-01  2.026621E-01  2.007540E-01  1.644982E-01  1.781501E-01  1.624188E-01該過程需要是:逐行搜索文件,直到找到起始關鍵字(在本例中為 MACRO)。之后繼續逐行查找,直到找到特定的標識符。將標識符后面的行中的每個值讀取到數組或列表中。一旦找到另一個標識符就停止讀取。到目前為止,這就是我所擁有的。如果標識符是 MACRO 之后的第一個值(例如,如果它是 SIGABS),則代碼可以正常工作,但對于任何其他值(例如,SIGTRAN)則不行。我的結果文件中可能有 50 個不同的標識符,因此我需要代碼能夠一次選出一個。
查看完整描述

1 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

嘗試以下操作。它將文件作為文本處理,分隔包含在 start_identifier 和 end_identifier 之間的部分,并通過一些工作返回最終在 list_of_results 中擴展的浮點列表(該列表必須在調用函數之前預先存在,因此您必須首先創建手動)。您可以運行任意一對標識符。讓我知道它是如何運作的


def read_data_from_file_macro(file_name, start_identifier, end_identifier):

    with open(file_name) as f:

    t=f.read()

    t=t[t.find('MACRO'):]

    t=t[t.find(start_identifier)+len(start_identifier):t.find(end_identifier)]

    t=t.replace('\n', '').split()

    t=[float(i) for i in t if not i.isidentifier()]

    list_of_results.extend(t)


查看完整回答
反對 回復 2023-10-18
  • 1 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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