• 締切済み

python 外部ファイルのテキスト処理について

お世話になります。 python を使用して、あるディレクトリ中にあるテキストファイル(ひな形ファイル、複数行)を読み込んで、 これに対してリストやタプル、ディクショナリなどに入った値を連続的に変化させた複数のアウトプットファイルを同一ディレクトリに生成する、という作業を考えています。 たとえばですが、外部のひな形ファイルに ${list1}番のファイル ${list2}のデータ データコード、データ名一覧 -------------+---------- ${list3} -------------+---------- などと作っておきます。{}内はプレースホルダのようなものですがこの形式でなくてもかまいません。 ここに、別途処理して${list2}、${list2}、${list3}を置き換えたファイルを、ファイル番号毎に生成する、というような作業です。 ここで、テキストの単純な置換ならば、stringモジュールのTemplateクラスなどの利用があるようですが、このような複雑な置換にはどう対応していいか分かりません。 上の例で言うと、たとえばlist3には、別の外部ファイルにあるデータ番号、データ名をタプルなどに読み込んで、それを1行ずつ流し込むことをやりたいので、このモジュールの使用は難しそうです。 他に自分で考えた方法としては、ひな形ファイルをファイルオブジェクトとして読み込んで、forを使って順番に処理していく方法ですが、これだとファイルのシーク位置がおかしくなったり、何度も同じような処理が連続してしまってうまくコードに出来ませんでした。 まだプログラミング自体に慣れていませんが、コーディング自体は自分でがんばりますので、方針を教えていただけますとうれしいです。 もし分かりづらかったら補足要求お願いします。

みんなの回答

  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

Pythonは詳しくはないのですが、 http://python.g.hatena.ne.jp/muscovyduck/20080703/p1 を参考に

すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その雛形を 1つの文字列として読み込んで, あとは正規表現を使って努力と根性で置き換えるとか. なんか馬鹿っぽいけど.

noname#231762
質問者

補足

ありがとうございます。 置換のパターン自体は書けそうなのですが、困っているのはファイルの扱いです。 複数の置換箇所を置換するときに、どうファイルに書き込んでいけばいいかわからなくて 読み込み用ファイルオブジェクトをopen開いて、さらに書き込み用ファイルオブジェクトを作って、処理を行ったものを書き込んでいけばいいのだと思いますが、置換する場所が複数あるので、一つの置換が終わったファイルを再度メモリに読み込んで、さらに置換をする、という作業が大量に生じてしまいます。それを簡潔に行う方法はないでしょうか?確かに馬鹿っぽいことやってるかもしれません。

すると、全ての回答が全文表示されます。

関連するQ&A