如何从放射报告.txt文件提取数据并按指定列存入pandas DataFrame?
从放射报告文本提取数据并构建Pandas DataFrame
1. 读取报告文本文件
先将txt文件中的完整报告内容读入内存:
with open('radiology_report.txt', 'r', encoding='utf-8') as file: full_report = file.read()
2. 按主题提取目标内容
利用正则表达式匹配Findings、Impression、Recommendation对应的文本区块,适配常见放射报告格式:
import re # 提取Findings部分 findings_pattern = re.compile(r'Findings:(.*?)(?=Impression:|Recommendation:|$)', re.DOTALL | re.IGNORECASE) findings = findings_pattern.search(full_report).group(1).strip() if findings_pattern.search(full_report) else '' # 提取Impression部分 impression_pattern = re.compile(r'Impression:(.*?)(?=Recommendation:|$)', re.DOTALL | re.IGNORECASE) impression = impression_pattern.search(full_report).group(1).strip() if impression_pattern.search(full_report) else '' # 提取Recommendation部分 recommendation_pattern = re.compile(r'Recommendation:(.*?)(?=$)', re.DOTALL | re.IGNORECASE) recommendation = recommendation_pattern.search(full_report).group(1).strip() if recommendation_pattern.search(full_report) else ''
注:添加re.IGNORECASE参数是为了兼容关键词大小写不一致的情况,比如FINDINGS或findings
3. 构建Pandas DataFrame
将完整报告和提取的各主题内容存入指定列的DataFrame:
import pandas as pd report_data = { 'Report': [full_report], 'Findings': [findings], 'Impression': [impression], 'Recommendation': [recommendation] } df = pd.DataFrame(report_data)
特殊情况处理
- 如果报告格式有特殊变体(比如主题后带换行、分隔线),需要微调正则表达式的匹配逻辑,确保精准捕获内容
- 若报告存在多个同类主题(极少出现),可改用
re.findall()批量提取后再做针对性处理
内容的提问来源于stack exchange,提问作者user10997591
相关产品推荐
相关产品推荐

