0

我正在使用 Python 生成用于测试的数据。

我的整个过程几乎可以正常工作,但是,我有这段代码。

def get_lines():

    line1 = "Document Header - Once per document"
    line2 = "\nDocument Information - Once per document"
    line3 = "\nDocument Information 2 - Once per document"
    line4 = "\nUser information 1"
    line5 = "\nUser Information 1"
    line6 = "\nUser Information 1"
    line7 = "\nDocument Footer - Once per document"

    return line1 + line2 + line3 + line4 + line5 + line6 + line7

我想做的是用用户信息 2,3,4 填充第 4,5,6 行,如下所示:

line1 = "Document Header - Once per document"
line2 = "\nDocument Information - Once per document"
line3 = "\nDocument Information 2 - Once per document"   
line4 = "\nUser information 1"
line5 = "\nUser Information 1"
line6 = "\nUser Information 1"  
line4 = "\nUser information 2"
line5 = "\nUser Information 2"
line6 = "\nUser Information 2"
line4 = "\nUser information 3"
line5 = "\nUser Information 3"
line6 = "\nUser Information 3"
line7 = "\nDocument Footer - Once per document"

但是让它随机化,即说我想要 10 个文件,一些将包含一个用户信息,一些 2 一些 3 等等......

我正在努力寻找一种一致的方式来生产我需要的东西。

谢谢你。

编辑:添加示例消息:ORC OBR 和 OBX 都由 UID 链接

MSH|^~\&||||||||201705301105||ORM^O01|4960855009|P|2.5||NE|AL||||
PID|1||^^^^HOSPITALNO~^^^^NHSNO||Hendry^John||190203130000|F|||||||||||||| 
PV1|1||G2D|||||||||||||||||||||||||||||||||||||||||||||||| 
ORC|NW|2017053019783377||19783377|||1^^^201705304500^^R||^^^201705
OBR|1|2017053019783377||1019|||2017053011045|201705301045||Test001||||||||||
OBX|1|ST|2017053019783377||2017053019783377|||||||||||||||
SPM|1|||||||||||||||||||||||||||||
4

2 回答 2

0

你可以喜欢这段代码。

def get_lines():
    line1 = "Document Header - Once per document"
    line2 = "\nDocument Information - Once per document"
    line3 = "\nDocument Information 2 - Once per document"
    line4 = "\nUser information 1"
    line5 = "\nUser Information 1"
    line6 = "\nUser Information 1"
    line7 = "\nDocument Footer - Once per document"

    return setLine(line1, 1) + setLine(line2, 1) + setLine(line3, 1) + setLine(line4, 3)+ setLine(line4, 3, "1", "2")


def setLine(content, iNum = 1, oldStr="", newStr=""):
    strStr = ""
    for ii in range(0, iNum):
    strStr += content.replace(oldStr, newStr)
    return strStr

print(get_lines())

示例代码输出为:

Document Header - Once per document
Document Information - Once per document
Document Information 2 - Once per document
User information 1
User information 1
User information 1
User information 2
User information 2
User information 2
于 2017-05-31T08:52:28.123 回答
0

编辑

我现在看到您提供了示例数据,但我不确定这是否是您期望从该get_lines方法获得的输出,还是您将要消耗的输入以产生所需的输出get_lines


只需传递一个带有您要打印的用户标识的变量。您还可以使用random.choice从列表中随机选择一个值或生成并传递一个范围内的随机整数random.randint

def get_lines(userid):

    line1 = "Document Header - Once per document"
    line2 = "\nDocument Information - Once per document"
    line3 = "\nDocument Information 2 - Once per document"
    line4 = "\nUser information {}".format(userid)
    line5 = "\nUser Information {}".format(userid)
    line6 = "\nUser Information {}".format(userid)
    line7 = "\nDocument Footer - Once per document"

    return line1 + line2 + line3 + line4 + line5 + line6 + line7

用户 ID = [1, 2, 3, ,4 ,5, 6, 7, 8, 9]

于 2017-05-31T08:30:32.213 回答