(перефразируя вопрос для большей ясности.)

Предположим, у меня есть 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 ответ1

0

Вы уже сгенерировали карту форматирования, поэтому единственной оставшейся работой является замена регулярных выражений. Создать карту сложнее, особенно для более крупного и сложного текста. Я использую Sublime Text для этого. Но сценарий использования и дополнительная информация здесь неясны, вы должны обратиться к softwarerecs.ЮВ, если это важно. В любом случае я включаю версию 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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .