Python: заменить строку под определенной строкой - PullRequest
1 голос
/ 16 апреля 2020

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

В основном у меня есть этот кусок кода в файле .txt:

<item name="Find_this_keyword">
ente<value type="vector">[-0.1 0.2 0.3 1.4]
</item>

эта строка находится внутри тысячи строк, похожих на эту, которые отличаются только для этого ключевого слова. Поэтому в основном я хочу, чтобы python изменил строку под строкой с этим ключевым словом. Мне нужно заменить 4 числа внутри вектора другими 4 числами.

У вас есть какие-либо подсказки?

Спасибо за ваше время

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Используйте regex, чтобы найти шаблон и замените значение:

import re

pattern = '\[.+\]'
replace = '[num1, num2, num3, num4]'

file = open('code.txt', 'w')
    for line in file:
    if 'ente<value type="vector">' in line:
        re.sub(pattern, replace, line)

Просто замените num1, num2, num3, num4 новыми значениями.

Позвольте им в строковом формате, если вы не будете использовать их для математики.

0 голосов
/ 16 апреля 2020

Вы можете попробовать что-то вроде этого.

code.txt <- файл с кодом </p>

new_vals = [1, 2, 3, 4]
f1 = open('code.txt', 'r')
f2 = open('code_out.txt', 'a+')
for line in f1:
    newline = line
    if 'ente<value type="vector">' in line:  # check line by line and look if the prefix matches
         newline = 'ente<value type="vector">' + f'[{new_vals[0] {new_vals[1]} {new_vals[2]} {new_vals[3]}]'
    # replace the new line
    f2.write(newline)

f1.close()
f2.close()
...