Поиск по нескольким файлам и запись в одном
Помогите написать скрипт на питоне, задача которого будет состоять в том, чтобы делать поиск по трем файлам и запись в одном из них.
В общем есть три файла. Два текстовых и один 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] ищет направление для развития атаки...