Name Miss deks KUMARI Booking Date 22/05/2020
Gender/Age male 24 Yrs Reporting Date 22/05/2020
Lab No. 10203693 Sample Collected At Lab
Ref. By Dr. I.C.U
; UVLO
Test Name Value Unit Biological Ref Interval
COMPLETE BLOOD COUNT (CBC)
TOTAL LEUCOCYTES COUNT (TLC) 23160 cells/cmm 4000 - 11000
DIFFERENTIAL LEUCOCYTES COUNT (DLC)
NEUTROPHILS 93.4 % 45.0 - 65.0
LYMPHOCYTES 3.3 % 20.0 - 45.0
MONOCYTES 3.1 % 4.0 - 10.0
EOSINOPHILS 0.2 % 0.0 - 5.0
BASOPHILS 0.0 % 0.0-1.0
ABSOLUTE NEUTROPHILS 21620.0 3000.0 - 7000.0
ABSOLUTE LYMPHOCYTES 750.0 800.0 - 4000.0
ABSOLUTE MONOCYTES 730.0 0.0 - 1200.0
ABSOLUTE EOSINOPHILS 50.0 0.0 - 500.0
ABSOLUTE BASOPHILS 10.0 0.0 - 100.0
RBC COUNT 4.31 Millions/cmm 3.80 - 5.80
这是一个文本文件,我想使用正则表达式进行这种输出
如果我搜索 NEUTROPHILS
,我希望它的值为 93.4
如果我搜索 BASOPHILS
,我希望它的值为 0.0
,类似这样的值。
只需要前两列,我尝试执行一次正则表达式 ^[^\S\r\n]*(\S+)[^\d\r\n]+(\d+(?:\.\d+)?)[^\d\r\n]*(\d+(?:\.\d+)?)?
但它返回所有
谁能帮我弄到这个
这是我的 list
`["NEUTROPHILS"
"LYMPHOCYTES"
"MONOCYTES"
"EOSINOPHILS"
"BASOPHILS"]`
我想要这样-:
{
"NEUTROPHILS" : 93.4
"LYMPHOCYTES" : 3.3
"MONOCYTES" : 3.1
"EOSINOPHILS" : 0.2
"BASOPHILS" : 0.0 }
最佳答案
您可以使用以下表达式:
\b(?P<key>[A-Z][A-Z ]+)\b(?P<value>\d+(?:\.\d+)?)
然后,我们需要清理键(删除不必要的空格)并考虑一个函数,该函数返回给定键的值。可选:将其全部放在一个类中。也就是说,代码可以是:
import re
class Finder:
def __init__(self, haystack):
self.db = self.build_db(haystack)
def build_db(self, haystack):
rx = re.compile(r'\b(?P<key>[A-Z][A-Z ]+)\b(?P<value>\d+(?:\.\d+)?)')
ws = re.compile(r'\s+')
return {ws.sub(' ', m["key"].strip()): m["value"] for m in rx.finditer(haystack)}
def find_by_key(self, key):
try:
value = self.db[key]
except KeyError:
value = None
return value
def get_selected(self, lst):
result = {}
for key in lst:
value = self.find_by_key(key)
if value:
result[key] = value
return result
def get_all(self):
return self.db
cls = Finder(junk)
dct = cls.get_selected(["NEUTROPHILS", "LYMPHOCYTES", "MONOCYTES", "EOSINOPHILS", "BASOPHILS"])
print(dct)
哪个会产生
{'NEUTROPHILS': '93.4', 'LYMPHOCYTES': '3.3',
'MONOCYTES': '3.1', 'EOSINOPHILS': '0.2', 'BASOPHILS': '0.0'}
查看 regex101.com 上表达式的演示.
关于python - 如何使用正则表达式获取字符串及其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62881208/