从OCR resu解析Python正则表达式

2024-04-19 08:15:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图分析以下文本

输入:

value1 @ M Temperature       1.30 ohmm       @ 74 00 degF  
value2 Q M. Temperature          1 70 ohmm @ 74.00 degF   
value3 @ m Temperature       110 ohmm        @ 74.00 degF  

预期产量:

^{pr2}$

等等

我能够从文件中提取文本,但是在使OCR输出中的差异动态解析时遇到问题。因此,当它显示为“Temp”时,它仍然会拉动期望值。在

import re

with open('C:\Users\NthDS1\Documents\samp.txt', 'r') as f:
    data  = list()
    group = dict()
    for key, value in re.findall(r'(.*)Temperature\s*([\dE+-.]+)', f.read()):
        if key in group:
            data.append(group)
            group = dict()
        group[key] = value
    data.append(group)

print data

Tags: keyin文本redatavaluegroupdict
2条回答

如果这是唯一的变化(点的空格),你可以试试

\b(?P<value>\d+(?:[. ]\d+)?)\b\s*
(?P<unit>\w+)

a demo on regex101.com


在一个小函数的帮助下,您可以使用 ^{pr2}$

屈服

[(1.3, 'ohmm'), (74.0, 'degF'), (1.7, 'ohmm'), (74.0, 'degF'), (110.0, 'ohmm'), (74.0, 'degF')]

你可以试试这个:

import re
data = [dict(zip(['name', 'ohmm', 'degF'], re.findall('^[a-zA-Z0-9]+|[\d\.]+(?=\sohmm)|[\d\.]+(?=\sdegF$)', i.strip('\n'))) for i in open('filename.txt')]

输出:

^{pr2}$

相关问题 更多 >