簡體   English   中英

如何讀取 python 中 pipe 分隔文件中的所有行?

[英]How to read all the lines in a pipe delimited file in python?

我正在使用hl7apy創建一個 python 腳本,以使用管道分隔文件中的數據生成 hl7 消息。

我的輸入文件看起來像這樣

John|Doe|Facility
Smith|Doe1|Test_Facility

我從 hl7apy 庫中獲取了示例,並進行了一些更改以從 pipe 分隔文件中讀取。 在代碼中,我將文件中第二個字段的值分配給 PID.5.1 段,並期望 output 有兩條消息,因為我的輸入文件中有兩行。

代碼

from hl7apy.core import Message
from hl7apy.parser import parse_message

fileHandle = open('test_pipe.txt', 'r')

for line in fileHandle:
    fields = line.split('|')

m = Message("ADT_A01")
m.msh.msh_3 = 'GHH_ADT'
m.msh.msh_7 = '20080115153000'
m.msh.msh_9 = 'ADT^A01^ADT_A01'
m.msh.msh_10 = "0123456789"
m.msh.msh_11 = "P"
m.msh.msh_12 = ""
m.msh.msh_16 = "AL"
m.evn.evn_2 = m.msh.msh_7
m.evn.evn_4 = "AAA"
m.evn.evn_5 = m.evn.evn_4
m.pid.pid_5.pid_5_1 =  fields[1]
m.nk1.nk1_1 = '1'
m.nk1.nk1_2 = 'NUCLEAR^NELDA^W'
m.nk1.nk1_3 = 'SPO'
m.nk1.nk1_4 = '2222 HOME STREET^^ANN ARBOR^MI^^USA'

print (m.value)

fileHandle.close()

當我運行此代碼時,我在 output 中只收到一條消息,第二行中的第二個字段 (Doe1) 的值,而不是 output 中的兩條消息,兩行中都有第二個字段的值。 如何使此代碼讀取文件中的所有行?

這是因為fields在 for 循環中被覆蓋。

你可能會改變

for line in fileHandle:
    fields = line.split('|')

fields = [line.split('|') for line in fileHandle]

或者您可以更改代碼的 rest 的縮進

for line in fileHandle:
    fields = line.split('|')

    m = Message("ADT_A01")
    m.msh.msh_3 = 'GHH_ADT'
    m.msh.msh_7 = '20080115153000'
    m.msh.msh_9 = 'ADT^A01^ADT_A01'
    m.msh.msh_10 = "0123456789"
    m.msh.msh_11 = "P"
    m.msh.msh_12 = ""
    m.msh.msh_16 = "AL"
    m.evn.evn_2 = m.msh.msh_7
    m.evn.evn_4 = "AAA"
    m.evn.evn_5 = m.evn.evn_4
    m.pid.pid_5.pid_5_1 =  fields[1]
    m.nk1.nk1_1 = '1'
    m.nk1.nk1_2 = 'NUCLEAR^NELDA^W'
    m.nk1.nk1_3 = 'SPO'
    m.nk1.nk1_4 = '2222 HOME STREET^^ANN ARBOR^MI^^USA'

    print (m.value)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM