하나의 텍스트 파일을 양식이 있는 다른 텍스트 파일에 대한 수정된 '스텐실'로 사용

하나의 텍스트 파일을 양식이 있는 다른 텍스트 파일에 대한 수정된 '스텐실'로 사용

(더 나은 명확성을 위해 질문을 다시 표현했습니다.)

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)

관련 정보