Поиск по нескольким файлам и запись в одном

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

В общем есть три файла. Два текстовых и один xml.

Первый файл под названием file1.txt, по нему и начинается поиск, и в него делается запись, а содержимое у него такое:

# EVENT_WAIT
= 0, 0, 0, 0, 0, 0, 0, 1, 0
> 30, 750,
INGAME ENGLISH: [%male#1] holds up the ball
REPORT ENGLISH: [%male#1] held up the ball
REPLAY ENGLISH: 
> 30, 750,
INGAME ENGLISH: [%male#1] is forced to hold onto the ball
REPORT ENGLISH: [%male#1] was forced to hold onto the ball
REPLAY ENGLISH: 
> 30, 750,
INGAME DUTCH: [%male#1] houdt de bal bij
REPORT DUTCH: [%male#1] vertraagde het spel
REPLAY DUTCH: 
> 30, 750,
INGAME DUTCH: [%male#1] vindt geen afspeelpunt
REPORT DUTCH: [%male#1] vond geen afspeelpunt
REPLAY DUTCH: 
> 30, 750,
INGAME FRENCH: [%male#1] conserve le ballon
REPORT FRENCH: [%male#1] a temporisé
REPLAY FRENCH: 
> 30, 750,
INGAME ITALIAN: <p1> mantiene la palla
REPORT ITALIAN: <p1> ha rallentato il gioco
REPLAY ITALIAN: 
> 30, 750,
INGAME ITALIAN: <p1> non trova nessun compagno a cui passare
REPORT ITALIAN: <p1> non ha trovato nessun compagno a cui passare
REPLAY ITALIAN: 
> 30, 750,

# EVENT_BALL_GOES_LOOSE
= 1, 0, 0, 0, 0, 0, 0, 1, 0
> 10, 750,
INGAME ENGLISH: The ball goes loose
REPORT ENGLISH: The ball went loose
REPLAY ENGLISH: 
> 10, 750,

И так далее. Там много языков.

Нам нужны только те строки, которые начинаются так:

INGAME ENGLISH: здесь текст по которому надо совершать поиск и заменять его
REPORT ENGLISH: здесь текст по которому надо совершать поиск и заменять его

В общем таких строк в файле будет около 10 000.

Остальные строки остаются неизменными.

Также есть второй файл под названием file2.xml, у него такое содержимое:

<record>
<list id="evts">
    <record>
        <integer value="0" id="id"/>
        <list id="evar">
            <record>
                <translation_record id="game" translation_id="369937" type="use" value="[%male#1] holds up the ball[COMMENT: FR 0; FR 499;EVENT_WAIT;INGAME; EVENT_HOLD_NEAR_CORNER_FLAG;INGAME;]"/>
                <translation_record id="rply" translation_id="369787" type="use" value="[%male#1] held up the ball[COMMENT: FR 0;EVENT_WAIT;REPORT;]"/>
                <integer id="prob" value="30"/>
                <integer id="dely" value="3"/>
            </record>
            <record>
                <translation_record id="game" translation_id="370009" type="use" value="[%male#1] is forced to hold onto the ball[COMMENT: FR 0;EVENT_WAIT;INGAME;]"/>
                <translation_record id="rply" translation_id="372393" type="use" value="[%male#1] was forced to hold onto the ball[COMMENT: FR 0;EVENT_WAIT;REPORT;]"/>
                <integer id="prob" value="30"/>
                <integer id="dely" value="3"/>
            </record>
            <record>

и так далее.

Как видно там есть текст, который содержится в первом файле, то есть:

[%male#1] holds up the ball
[%male#1] held up the ball

Перед найденным текстом есть номер, он нам и нужен. Это 369937 для первой строки, и 369787 для второй строки.

И теперь третий файл file3.txt, в котором содержатся непосредственно те строки, которые нам нужны, там все строки пронумерованы. Вот кусочек из третьего файла:

STR-369937
[%male#1] владеет мячом

STR-369938
[%male#1] ищет направление для развития атаки...

Нам нужно совершить поиск по тем двум номерам, которые мы нашли, то есть 369937 и 369787. И текст, который ниже номера, скопировать и заменить вместо того, который содержится в файле номер 1.

Получится так:

INGAME ENGLISH: [%male#1] владеет мячом
REPORT ENGLISH: [%male#1] ищет направление для развития атаки...

Ответы (0 шт):