用Python替换大字符串中的字符的最佳方法?

2024-09-27 21:27:47 发布

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

我正在处理相对较大(30行)的文本块。以下是摘录:

PID|1||06225401^^^PA0^MR||PATIENT^FAKE R|||F

PV1|1|I|||||025631^DoctorZ^^^^^^^PA0^^^^DRH|DRH||||...

ORC|RE||CYT-09-06645^AP||||||200912110333|INTERFACE07

OBR|1||CYT09-06645|8104^^L|||20090602|||||||200906030000[conditio...

OBX|1|TX|8104|1|SOURCE OF SPECIMEN:[source]||||||F|||200912110333|CYT ...

我目前有一个脚本,删除非法字符或术语。这里有一个例子。在

    infile = open(thisFile,'r')
    m = infile.read()

    #remove junk headers
    m = m.replace("4þPATHþ", "")
    m = m.replace("10þALLþ", "")

我的目标是修改这个脚本,这样我就可以在其中一个字段的末尾添加4位数字。具体地说,OBR行中的日期字段(“20090602”)。完成的脚本将能够处理任何遵循相同格式的文件。用我当前处理文件输入的方式,这是可能的还是必须使用一些不同的逻辑?在


Tags: 文件文本脚本pidinfilereplacefakemr
2条回答

你可能会发现这里的答案很有帮助。在

Iterative find/replace from a list of tuples in Python

这是一个大纲(未经测试)。。。基本上你一次只做一行

for line in infile:
    data = line.rstrip("\n").split("|")
    kind = data[0]
    # start of changes
    if kind == "OBR":
        data[7] += "0000" # check that 7 is correct!
    # end of changes
    outrecord = "|".join(data)
    outfile.write(outrecord + "\n")

上面假设您是按行类型(例如:“OBR”)和列索引(例如:7)选择fix-up目标。如果只有几个这样的目标,只需添加更多类似的fix语句。如果有多个目标,可以这样指定:

^{pr2}$

修复代码如下:

if kind in fix_targets:
    for col_index in fix_targets[kind]:
        data[col_index] += "0000"

在任何情况下,您都可能希望在更改数据[col_index]之前添加代码以检查数据[col峎u index]是否真的是YYYYMMDD格式的日期。在

以上地址都没有删除不需要的头,因为您没有显示示例数据。我想把你的替换应用到每一行(如果替换后只有空格,就避免写这行)就可以了。在

相关问题 更多 >

    热门问题