regex 需要帮助提取以下数据

hyrbngr7  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(89)

输入文本:

05/08/04 OUTPT LABORATORY 35.00 35.00 35.00 0.00 0.00 0.00
80053
05/10/04 OFFICE MEDICAL 14.00 9.50 0.00 0.00 9.50 0.00 1
84436
05/10/04- HOME MED EQUIP 32.00 32.00 32.00 0.00 0.00 0.00
05/13/04 A4595RR
05/10/04- HOME MED EQUIP 10.00 3.75 0.00 0.00 3.75 0.00 1
05/13/04 L3800RR
05/14/04 PHYSIOTHERAPY 23.00 23.00 7.00 0.00 16.00 0.00
97110
05/14/04 PHYSIOTHERAPY 14.00 9.00 0.00 0.00 9.00 0.00 1
97140

字符串
Excel中的预期输出格式如下:
| 服务日期|类型的服务|程序编号|开单金额|所准予的|我们支付的金额|未覆盖|可扣减|负担费用|
| --|--|--|--|--|--|--|--|--|
| 05/08/04|输出实验室| 80053 | 35 | 35 | 35 | 0 | 0 | 0 |
| 2004年10月5日|办医疗| 84436 | 14 |九点五| 0 | 0 |九点五| 0 |
| 2004年10月5日至2004年13月5日|家庭医疗设备|A4595RR| 32 | 32 | 32 | 0 | 0 | 0 |
| 2004年10月5日至2004年13月5日|家庭医疗设备|L3800RR| 10 |三点七五| 0 | 0 |三点七五| 0 |
| 05/14/04|理疗| 97110 | 23 | 23 | 7 | 0 | 16 | 0 |
| 05/14/04|理疗| 97140 | 14 | 9 | 0 | 0 | 9 | 0 |
问:我能够提取,但问题是在这样的情况下,这些数据格式是不是在确切的顺序"05/10/04- HOME MED EQUIP 32.00 32.00 32.00 0.00 0.00 0.00 05/13/04 A4595RR"有可能是两个日期在某些情况下,只有一个日期格式?有人可以帮助我在这方面?

Python

我有文本文件作为输入,一旦我读文件,我必须确定上面的一块输入,我能够实现,但现在我有数据是不一致的,但需要阅读上述输入和加载Excel文件类似下面的输出
注意:有一个日期是动态的,有时它是不可用的。
尝试了这个,但只能读前两行,也与失踪的信息

import pandas as pd
import re

input_file_path = r'C:\Users\test\Downloads\PracticalAssessmentFiles\Input.txt'

output_file_path = r'C:\Users\test\Downloads\PracticalAssessmentFiles\output.xlsx'

with open(input_file_path, 'r') as file:
    input_string = file.read()

pattern = r'(\d{2}/\d{2}/\d{2,4}(?:\s*-\s*\d{2}/\d{2}/\d{2,4})?)\s+([\w\s]+)\s+([\dA-Z]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)'
matches = re.findall(pattern, input_string)

data = []
for match in matches:
    service_date, service_type, procedure_number, billed, allowed, paid, non_covered, deductible, copayment = match
    data.append({
        "Service Date": service_date,
        "Type of Service": service_type,
        "Procedure Number": procedure_number,
        "Amount Billed": billed,
        "Amount Allowed": allowed,
        "Amount We Paid": paid,
        "Non Covered": non_covered,
        "Deductible": deductible,
        "Copayment": copayment
    })

df = pd.DataFrame(data)

df.to_excel(output_file_path, index=False)

print(f"Data has been processed and saved to {output_file_path}")

qf9go6mv

qf9go6mv1#

这就是你所要求的。也许这可以成为你扩展的一个很好的基础。

import re

oddlines = re.compile(r"([0-9/-]*) ([A-Z ]*) ([0-9. ]*)")

for num,line in enumerate(open('x.txt')):
    if num % 2 == 0:
        parts = oddlines.match(line)
        dt, title, nums = parts.groups()
        nums = nums.split()
    else:
        if dt[-1] == '-':
            dt1,proc = line.split()
            dt += dt1
        else:
            proc = line.strip()
        row = [dt, title, proc] + nums[:5]
        print(','.join(row))

字符串
输出量:

05/08/04,OUTPT LABORATORY,80053,35.00,35.00,35.00,0.00,0.00
05/10/04,OFFICE MEDICAL,84436,14.00,9.50,0.00,0.00,9.50
05/10/04-05/13/04,HOME MED EQUIP,A4595RR,32.00,32.00,32.00,0.00,0.00
05/10/04-05/13/04,HOME MED EQUIP,L3800RR,10.00,3.75,0.00,0.00,3.75
05/14/04,PHYSIOTHERAPY,97110,23.00,23.00,7.00,0.00,16.00
05/14/04,PHYSIOTHERAPY,97140,14.00,9.00,0.00,0.00,9.00

相关问题