1つのテキストファイルを、フォームを含む他のテキストファイル用の修正された「ステンシル」として使用する

1つのテキストファイルを、フォームを含む他のテキストファイル用の修正された「ステンシル」として使用する

(より明確にするために質問を言い換えます。)

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

すでにフォーマットマップを生成しているので、残っている作業は正規表現の置換だけです。マップの生成は、特に大きくて複雑なテキストの場合は難しくなります。私は崇高なテキストそのために。しかし、ここではユースケースと詳細情報が明確ではありません。重要な場合は 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)

関連情報