(reformulando a pergunta para melhor clareza.)
Suponha que eu tenha 1.000 arquivos de texto. Cada arquivo é um formato textual, com descrições de campos e cabeçalhos fixos, mas os dados são diferentes. Por exemplo, arquivo 1:
The Foo Factory Date: 2015-10-02 Order Details ------------------------- Order ID: [ 1 ] Amount: [ 1 ] Order Price: [ 12.34 ] Have a nice day.
e arquivo 2:
The Foo Factory Date: 2016-01-11 Order Details ------------------------- Order ID: [ 7 ] Amount: [ 17 ] Order Price: [ 543.21 ] Have a nice day.
etc. Agora, suponha que eu tenha traduzido as descrições dos campos para o francês; e eu apaguei os valores. Então agora eu tenho:
L'usine Foo Date: Détails de commande ------------------------- Nm.du Commande: [ ] Montant: [ ] Prix du Commande: [ ] Bonne journée.
Eu realmente não falo francês, então ignore qualquer erro aqui. De qualquer forma, as posições de todos os campos são exatamente as mesmas, mas o texto que não é o valor do campo é diferente. Quero aplicar esta substituição a todos os arquivos. Como faço para conseguir isso?
Responder1
Você já gerou o mapa de formatação, então o único trabalho restante é a substituição de regex. Gerar o mapa é mais difícil, especialmente para textos maiores e mais complicados. eu usoTexto sublimepor isso. Mas o caso de uso e mais informações não estão claros aqui, você deve levá-los para softwarerecs.SE se for importante. De qualquer forma, estou incluindo uma versão 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)