Usando um arquivo de texto como um 'estêncil' modificado para outros arquivos de texto com formulários


0

(reformulando a questão para melhor clareza.)

Suponha que eu tenha 1000 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.

Agora, suponha que eu tenha ido em frente e 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 sem valor de campo é diferente. Quero aplicar esta substituição a todos os arquivos. Como faço para conseguir isso?


11
Qual é o seu objetivo final?
user193661

@ Pergunta clara com os exemplos: Alterando as descrições dos campos para uma "saída de formulário" textual; e eventualmente terei muitos deles. Além disso, seu nick é bastante confuso. Não pretendo ser rude, mas - talvez você deva considerar mudar isso.
einpoklum

Você pode fornecer uma captura de tela antes e depois ou usar um bloco de código para fornecer um exemplo?
user193661

você "substituiu o texto" modelo "e soltou os" dados "específicos do arquivo que parecem que o arquivo agora estaria vazio.
User193661

Você está ciente de regex?
user193661

Respostas:


0

Você já gerou o mapa de formatação, portanto, o único trabalho restante é a substituição de regex. Gerar o mapa é mais difícil, especialmente para textos maiores e mais complicados. Eu uso Sublime Text para isso. Mas o caso de uso e outras informações não estão claros aqui, você deve levá-lo ao softwarerecs.SE se for importante. Estou incluindo uma versão Python de qualquer maneira:

 

# -*- 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)

O que quero dizer é que, se você tiver um arquivo muito grande, o próprio ato de determinar quais operações precisam ser realizadas seria trabalhoso. Pense, selecionando manualmente mil linhas de palavras-chave para criar seu mapeamento.
user193661

Ah, não, não, não, não quero escrever um script personalizado que contenha o padrão. Preciso de algo que aceite qualquer par (novo arquivo de padrão, arquivo de trabalho) e faça o trabalho.
einpoklum
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.