Использование одного текстового файла в качестве измененного "трафарета" для других текстовых файлов с формами
(перефразируя вопрос для большей ясности.)
Предположим, у меня есть 1000 текстовых файлов. Каждый файл представляет собой текстовую форму с фиксированными описаниями полей и заголовками, но данные отличаются. Например, файл 1:
The Foo Factory Date: 2015-10-02 Order Details ------------------------- Order ID: [ 1 ] Amount: [ 1 ] Order Price: [ 12.34 ] Have a nice day.
и файл 2:
The Foo Factory Date: 2016-01-11 Order Details ------------------------- Order ID: [ 7 ] Amount: [ 17 ] Order Price: [ 543.21 ] Have a nice day.
и т.д. Теперь, предположим, я перешел и перевел описания полей на французский язык; и я удалил значения. Итак, теперь у меня есть:
L'usine Foo Date: Détails de commande ------------------------- Nm.du Commande: [ ] Montant: [ ] Prix du Commande: [ ] Bonne journée.
Я на самом деле не говорю по-французски, поэтому игнорирую любые ошибки здесь. В любом случае, позиции всех полей абсолютно одинаковы, но текст, отличный от значения поля, отличается. Я хочу применить эту замену ко всем файлам. Как мне этого добиться?
1 ответ
Вы уже сгенерировали карту форматирования, поэтому единственной оставшейся работой является замена регулярных выражений. Создать карту сложнее, особенно для более крупного и сложного текста. Я использую Sublime Text для этого. Но случай использования и дополнительная информация здесь неясны, вы должны отнести их к softwarerecs.SE, если это важно. В любом случае я включаю версию Python:
# -*- coding: utf-8 -*-
import os
SOURCE_DIRECTORY = ''
DEST_DIRECTORY = ''
replacements = ["L'usine Foo ",
"Détails de commande",
"Nm.du Commande: ",
"Montant: ",
"Prix du Commande: ",
"Bonne journée."]
samples = ["The Foo Factory ",
"Order Details",
"Order ID: ",
"Amount: ",
"Order Price: ",
"Have a nice day."]
for filename in os.listdir(SOURCE_DIRECTORY):
with open(os.path.join(SOURCE_DIRECTORY, filename), 'r') as nctn:
text = nctn.read()
for i, val in enumerate(samples):
text = text.replace(val, replacements[i])
with open(os.path.join(DEST_DIRECTORY, filename), 'w') as nctn:
nctn.write(text)