Вставить несколько строк с циклом for в строку, созданную с помощью readlines ()

1

Я пытаюсь вставить несколько строк в строку, которую я создал с readlines() в python. Я много часов отлаживал, но я не могу понять, в чем проблема.

У меня есть число я серверов, которое определено ранее. "data" - это строка, которая включает мой textdocument, и у меня есть функция get_line, которая ищет строку для ключевого слова "Позиция Queue1" и возвращает строку. В моем примере строка - 82.

...

data = cfg.readlines()

...

#Queue
i = int(gwi["Server"][0]) #Number of Servers
line_idx=get_line(data,'Queue1 Position')
for x in range(1,i+1):
    if x==1:
        data[line_idx] = ('Queue'+str(x)+' Position { 1.500000  '+str(1.100000-x+1)+'  0.000000  m }\n'+'Queue'+str(x)+
        ' Points { {  1.500  '+str(0.700-x+1)+'  0.000  m  }  {  2.500  '+str(0.700-x+1)+'  0.000  m  } }\n\n')
        print(line_idx) #test
    else:
        line_idx = line_idx + 1
        data[line_idx] = ('Queue'+str(x)+' Position { 1.500000  '+str(1.100000-x+1)+'  0.000000  m }\n'+'Queue'+str(x)+
            ' Points { {  1.500  '+str(0.700-x+1)+'  0.000  m  }  {  2.500  '+str(0.700-x+1)+'  0.000  m  } }\n\n')
        print(line_idx) #test

Мой документ, который я редактирую, выглядит в начале.

Когда я запускаю свой код, файл cfg- выглядит так. 'Server1 NextComponent {EntitySink1}' разрезан.

Но когда я запускаю свой код, результат должен быть таким.

Возможно ли решить эту проблему с помощью цикла for? Возможно, есть другое решение.

Теги:
string
python-3.x
readlines

1 ответ

1
Лучший ответ

Я решил проблему самостоятельно.

#Queue
i = int(gwi["Server"][0]) #Number of Servers
line_idx=get_line(data,'Queue1 Position')
del data[line_idx+1]
queue_text = ""
for x in range(1,i+1):
    if x<i:
        queue_text = queue_text+('Queue'+str(x)+' Position { 1.500000  '+str(1.100000-x+1)+'  0.000000  m }\n'+'Queue'+str(x)+
        ' Points { {  1.500  '+str(0.700-x+1)+'  0.000  m  }  {  2.500  '+str(0.700-x+1)+'  0.000  m  } }\n\n')
    else:
        queue_text = queue_text+('Queue'+str(x)+' Position { 1.500000  '+str(1.100000-x+1)+'  0.000000  m }\n'+'Queue'+str(x)+
        ' Points { {  1.500  '+str(0.700-x+1)+'  0.000  m  }  {  2.500  '+str(0.700-x+1)+'  0.000  m  } }\n')
data[line_idx] = queue_text

Ещё вопросы

Сообщество Overcoder
Наверх
Меню