Menggunakan satu file teks sebagai 'stensil' yang dimodifikasi untuk file teks lain dengan formulir

0

(Mengulang pertanyaan untuk kejelasan yang lebih baik.)

Misalkan saya punya 1000 file teks. Setiap file adalah bentuk tekstual, dengan deskripsi dan header bidang tetap, tetapi datanya berbeda. Misalnya, file 1:

The Foo Factory             Date:  2015-10-02

Order Details
-------------------------
Order ID:          [   1    ]  Amount: [   1 ]
Order Price:       [  12.34 ]

Have a nice day.

dan file 2:

The Foo Factory             Date:  2016-01-11

Order Details
-------------------------
Order ID:          [   7    ]  Amount: [  17 ]
Order Price:       [ 543.21 ]

Have a nice day.

dll. Sekarang, anggaplah saya melanjutkan dan menerjemahkan deskripsi lapangan ke dalam bahasa Prancis; dan saya menghapus nilai. Jadi sekarang saya punya:

L'usine Foo                 Date:            

Détails de commande
-------------------------
Nm.du Commande:   [        ]  Montant: [     ]
Prix du Commande: [        ]

Bonne journée.

Saya tidak benar-benar berbicara bahasa Prancis jadi abaikan kesalahan di sini. Lagi pula, posisi semua bidang sama persis, tetapi teks non-bidang-nilai berbeda. Saya ingin menerapkan penggantian ini ke semua file. Bagaimana saya mencapainya?

einpoklum
sumber
1
Apa tujuan akhir Anda?
user193661
@Clearquestionwithexamples: Mengubah deskripsi bidang untuk "output bentuk" tekstual; dan saya akhirnya akan memiliki banyak dari ini. Selain itu, nick Anda agak membingungkan. Saya tidak bermaksud kasar, tapi - mungkin Anda harus mempertimbangkan untuk mengubahnya.
einpoklum
Bisakah Anda memberikan tangkapan layar sebelum dan sesudah atau menggunakan blok kode untuk memberikan contoh?
user193661
Anda "mengganti teks" templat "dan menjatuhkan" data "khusus file yang terdengar seperti file itu sekarang akan kosong.
user193661
Apakah Anda mengetahui regex?
user193661

Jawaban:

0

Anda telah membuat peta pemformatan sehingga pekerjaan yang tersisa hanyalah mengganti regex. Membuat peta lebih sulit, terutama untuk teks yang lebih besar dan lebih rumit. saya menggunakan Teks Sublim untuk itu. Tetapi use case dan informasi lebih lanjut tidak jelas di sini, Anda harus membawanya ke softwarerecs.SE jika itu penting. Saya tetap menyertakan versi 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)
user193661
sumber
Maksud saya adalah, jika Anda memiliki file yang sangat besar, tindakan menentukan operasi apa yang perlu dilakukan, akan melelahkan. Pikirkan, secara manual memilih seribu baris kata kunci untuk membuat pemetaan Anda.
user193661
Oh, tidak, tidak, tidak, saya tidak ingin menulis skrip khusus yang berisi pola. Saya membutuhkan sesuatu yang mengambil pasangan (file pola baru, file yang berfungsi) dan melakukan pekerjaan.
einpoklum