Рандомизация выходов в файл

Я генерирую данные для тестирования, используя 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

То, что я хотел бы сделать, это заполнить строку 4,5,6 информацией о пользователе 2,3,4 примерно так:

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|||||||||||||||||||||||||||||

2 ответа

Вам может понравиться этот код.

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

Редактировать

Теперь я вижу, что вы предоставили пример данных, но я не уверен, что это желаемый результат, который вы ожидаете от 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

userids = [1, 2, 3,,4,5, 6, 7, 8, 9]

Другие вопросы по тегам