簡體   English   中英

如何編寫“之間”和“直到”以從python中的文本文件中提取整數?

[英]How to write “between” and “until” to extract integers from a text file in python?

我有很多類似下面的內容。

_:9:_:SER _ 9 SER S 3 0.000 66.878  
_:11:_:LEU _ 11 LEU E 8 0.000 67.168    
_:108:_:ARG _ 108 ARG   1 0.000 62.398  

每個項目都用空格隔開。 由於不同的線具有不同數目(例如911108 ),隨后的值不是在同一列的位置對齊。 在第三行中, ARG1之間有3個空格,因為該行沒有該信息,因此使用空格來填充它。

我需要提取兩個信息

1) 911108在第一,第二和第三線,分別值

2) 381值(前0.000在第一,第二和第三線,分別地)

我想使用python編寫通用腳本來提取該信息,而不是冗長的if-then loop來分別考慮一位,兩位和三位數字的情況。

我的想法是這樣的:

1)提取第一個和第二個之間的整數值:

2)提取第5個空格之后的整數值,直到在該值之后檢測到另一個空格為止。

如果您可以將每一行作為字符串獲取,則可以執行以下操作:

your_line = "_:108:_:ARG _ 108 ARG   1 0.000 62.398"
splitted = your_line.split()
# splitted = ['_:108:_:ARG', '_', '108', 'ARG', '1', '0.000', '62.398']

本質上,它會從原始列表中創建一個字符串列表,並由您輸入的字符分隔。如果不給split()參數,那么它將在任何空白處拆分字符串。

現在,您可以輕松提取所需的信息:

info1 = splitted[2]
info2 = splitted[4]

如果僅提取數字字段,則可以使用正則表達式\\d+(?:\\.\\d+)? ,它讀取數字,然后是句點和更多數字

然后,您可以使用re.findall將數字字段作為列表獲取,然后使用它們。

>>> fields = re.findall(r'\d+(?:\.\d*)?', lines[0])
>>> fields
['9', '9', '3', '0.000', '66.878']
>>> (fields[0], fields[2])
('9', '3')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM