python - 如何将表中的多行数据转换为通过强迫症提取的单行?
问题描述
我有一个 PDF(附件),它使用 OCR 转换为 .txt。OCR 输出看起来像
'2 VERFEN 100MCG NO11909 - Verve AMPO 1.00 47.70 0.00 47.70 47.70\n',
'INJECTION 2ML 28/02/202 ULE\n',
'(FENTANYL) 2 HEGCUNIE\n',
'VERVE\n',
'3 ADRENOR 4MG INABA294 AMPO 2.00 112.88 0.00 112.88 112.88\n',
'INJECTION 2ML oe ULE\n',
'(NORADRENALINE 31/08/202 HEGORINIE\n',
') SAMARTH 1\n',
'4 CELHEP; 50001U; HP11941A Celon NOS 3.00 267.00 0.00 267.00 267.00\n',
'INJECTION; \n',
'(HEPARIN); 30/06/202 HEGGUNJE\n',
'CELON 2\n',
我需要这种格式的输出
'2 VERFEN 100MCG INJECTION 2ML (FENTANYL) VERVE NO11909 - 28/02/2021 Verve AMPO ULE 1.00 47.70 0.00 47.70 47.70\n',
'3 ADRENOR 4MG INJECTION 2ML (NORADRENALINE) SAMARTH INABA2942 -31/08/202 AMPO ULE 2.00 112.88 0.00 112.88 112.88\n',
'4 CELHEP; 50001U; INJECTION; (HEPARIN); CELON HP11941A 30/06/2022 Celon NOS 3.00 267.00 0.00 267.00 267.00\n',
最终,我需要保留表格格式信息。
解决方案
这不是一个优化的解决方案。
如果所需输出中每行的第一个字符应始终是数字后跟空格,那么您的问题可以分解为识别模式,然后编写代码以连接行直到下一个模式。
识别字符串开头数字的正则表达式是^'[0-9]{2,3,4}
正则表达式将查找一位、两位、三位或四位数字。请注意后面的空格,}
以确保我们正在查看正确的模式。这个正则表达式适用于
'2 VERFEN 100MCG NO11909 - Verve AMPO 1.00 47.70 0.00 47.70 47.70\n',
'INJECTION 2ML 28/02/202 ULE\n',
'(FENTANYL) 2 HEGCUNIE\n',
'VERVE\n'
但不是为了
'2 VERFEN 100MCG NO11909 - Verve AMPO 1.00 47.70 0.00 47.70 47.70\n',
'INJECTION 2ML 28/02/202 ULE\n',
'(FENTANYL) \n',
'2 HEGCUNIE\n',
'VERVE\n'
两个2将分别处理。
您在代码中的逻辑可能如下所示 -
- 声明临时字符串变量
- 执行 3 到 5 直到文件结束
- 读取文件中的每一行
- 如果模式匹配,则1. 将临时字符串变量写入新文件, 2. 清除临时字符串变量。
- 从末尾删除
\n,'
并将该行连接到临时字符串变量
如果您不希望第一行为空白,您可能需要处理第一次写入文件。
推荐阅读
- python - AttributeError:“DataFrameGroupBy”对象没有属性“colnames”
- jquery - 加载 SwipeBox 画廊并打开外部链接
- python-requests - 当 URL 不存在时,为什么“请求”不返回 404?
- reactjs - 状态更新时不会触发useEffect
- gsm - SIM800L : AT+HTTPACTION:601 网络错误
- footer - 将另一个图像插入到 footer.php
- python - 我正在学习 python,请有人告诉我如何修复它,这样我就可以慢慢打印每个字母(就像打字机一样),但也可以使用输入
- python - python Binance:APIError(code = -1013):过滤器失败:LOT_SIZE
- c++ - 在 C++ 程序中获得超出输出限制
- python - CUDA_ERROR_ILLEGAL_ADDRESS - 在训练 tensorflow keras 模型时