• 締切済み

pythonでテキストの処理をしたいと考えています。

pythonでテキストの処理をしたいと考えています。 複数のデータファイルがあって、どのファイルもデータ1列目、2列目はある決まった並びになっていて3列目だけランダムな値が入ります。 そこでファイルを読み込んで1列目、2列目は一度読み込んだものを別なファイルに書き出し、 それぞれのファイルの3行目を、その別ファイルに次々と加えていく様なプログラムを組みたいのですが、 どういう風に記述したら良いのか思案しています。 たとえば、一つ目のファイル(1.dat) 1 1 5.1 2 1 6.2 3 1 5.5 1 2 7.6 2 2 2.4 2つ目のファイル(2.dat) 1 1 2.5 2 1 3.2 3 1 4.6 1 2 8.0 2 2 1.1 3つ目のファイル(3.dat) 1 1 3.8 2 1 9.6 3 1 1.2 1 2 3.0 2 2 5.5 とあるときに、result.datというファイルに 1 1 5.1 2.5 3.8 2 1 6.2 3.2 9.6 3 1 5.5 4.6 1.2 1 2 7.6 8.0 3.0 2 2 2.4 1.1 5.5 という風に列をどんどんデータを追加していけるようなプログラムです。 アドバイスをどうかよろしくお願い致します。

みんなの回答

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

結局は何とでも書けるので、とりあえず、貴方の書いたコードを補足するとアドバイスを得られやすいよ。

tivi_cro
質問者

補足

ありがとうございます。 拙いコードでお目汚し恐縮ですが、よろしくお願い致します。 ***************************************************************** #!/usr/local/bin/python import csv from numpy import * out_file = 'result.csv' output = open (out_file, 'w') result_writer = csv.writer(output) array_line3 = array([nan]*100*24*6,float) for count_num in xrange(1,3): file_name = '%s'%(count_num) + '.txt' input_file = open ( file_name, 'r') label_line1 = [] label_line2 = [] label_line3 = [] for in_line in input_file: line1, line2, line3 = in_line.split(" ") label_line1.append(float(line1)) label_line2.append(float(line2)) label_line3.append(float(line3)) array_line3 = array(label_line3, float) for i in xrange(len(label_line1)): result_writer.writerow([line1[i], line2[i], array_line3[i]]) ************************************************************** 後半部分の記述がまずいことは分かっているのですが、どのように表現したら良いのか 分かりません。 すいませんがアドバイスよろしくお願い致します。

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

関連するQ&A

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

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

  • Pythonでテキストを行数指定して読み込む

    Pythonの勉強を始めて4ヶ月ほどの者です。 今、コマンドライン(Winでのコマンドプロンプト、Linux系での端末など)からPythonでメールアドレスが書いてあるテキストを読み込み、そのアドレスにメールを送るプログラムを考えてます。 具体的には、address.txtというファイルに、 aaa.example@test.ne.jp bbb.example@test.ne.jp ccc.example@test.ne.jp という風に記述してあるとします。(一行に一アドレスです。) プログラムの部分(最初からではなく途中です)は、 print "Select the E-mail Address below" a = open("Address.txt") for i in a: print i to = raw_input(":") とまできたんですが、自分としては読み込んだ「Address.txt」に書かれてるアドレスを行数ごとに指定して読み込みたいんです。つまりraw_input(":")に 1を入れたら1行目を指定→「aaa.example@test.ne.jp」 2を入れたら2行目を指定→「bbb.example@test.ne.jp」 3を入れたら3行目を指定→「ccc.example@test.ne.jp」 が選択されるようにし、変数toに代入されるようにしてSMTPモジュールのto_addrに引き渡すようにしたいのです。 ですが行数を指定してテキストを読み込むメゾットやオブジェクトが入ってるモジュールや関数はありますか? Pythonは2.6.4と3.0.1の両方のバージョンが入ってます。できれば両方で動かしたいので3.0.1で仕様の変更があったら教えてもらえるとありがたいです。 OSはメインがWinXPSP3、サブ(テスト用、VMWare使用)にUbuntu9.04(Pythonは2.6系だったと思います。)

  • Visual C++を 用いたテキストファイル読み込み(応用)

    Microsoft Visual C++ 2008 Express Editionを使っています。 テキストファイルは 約5000行×6列の数値(のみ)になっております。(列間にスペースあり) いくつかある5000×6行テキストファイルの中から、ファイル名を入力することで任意のテキストファイルにアクセスし、さらに6列のデータをそれぞれ別の配列に格納するコンソールプログラムを考えていますが行き詰まっています。例えば、1列目を配列1、2列目を配列2、・・・といった具合です。 詳しい方、どうかよろしくお願いいたします。

  • テキストファイルへの書き出し

    お世話になります。 ASP(VBScript)で質問なのですが、 例えば、テキストエリア内に あいうえお かきくけこ さしすせそ という風に複数行の文字列が記述してあるとして、 とあるボタンを押した時に、 この文字列をテキストエリア内に記述してあるとおりに テキストファイルへ出力したいのですが、 どのようにすればよいでしょうか? ご教授お願いいたします。

  • Python で、既存のテキストにデータを書き加えたいと思っています。

    Python で、既存のテキストにデータを書き加えたいと思っています。 こんにちは、 私はプログラミング初心者であります。仕事で必要に迫られたこともあり、知人より簡単だから、とPythonを薦められ、学習を始めています。 質問は、既存のテキストファイルの文頭に、数字と文字を付け加えたいと思っているのですが、上手く行きません。 既存のテキスト(data.txt)はこんな感じで、保存されています。 1111.1111   2222.2222   3333.3333   4444.4444   5555.5555 5555.5555   6666.6666   7777.7777   8888.8888   9999.9999 1010.1010   1110.1111   1210.1212   1310.1313   1414.1414 実際には縦横に永遠とデータが羅列されています。空白部分はタブ区切りになっています。横に7000ほどのデータを読むと、改行されています。これがテキスト方式で保存されています。 このデータ群の先頭に6行文のデータを追加したいと試みています。以下のような感じのデータです。 ncols      1019 nrows      1923 xllcorner    -67.2327777773961 yllcorner    44.63742951396 cellsize    0.000277777777779674 NODATA_VALUE   -999 open関数で data.txt を開き、write を使ってしまうと、data.txt 内のデータが全て消えてしまうのですが、どのようにすれば上記にある6つのデータを書き加える事ができるのでしょうか? 大本のデータは縦横に 9000x7000 近くのデータがタブで区切られて保存されており、その大きさが 500MB を越えていて、職場のPCではノートパッドで開いてから書き足す事ができません。 どなたかアドバイスを頂ければ幸いであります。

  • Pythonのプログラムの実行の考え方について

    pythonの教科書のサンプルの実行についてお尋ねします。 テキストのサンプルには普通、インタープリターで書いてあるものと、プログラムをファイルに書き出してそれをコマンドで一気に処理するもの(こちらの方が他の言語の実行に近いか)の2通りがあります。 インタープリター向きに記述されたものをファイルに書き出してpythonコマンドで、インタープリターと同じように実行するにはどのような書き換えが必要になるのでしょうか。結果を出力するときにインタープリターでは配列名を入力するだけでその内容が出力されたりしますが、ファイルではそれができないのでコマンドを指定するとかになると思いますが、他になにかあるでしょうか。 ファイルに書き出したプログラムの実行ですが、Pythonコマンドを実行しても実行形式の出力がないのでコンパイルではないわけですが、これはバッチとかシェルスクリプトと同じような意味になるのでしょうか。1行1行実行していくということですが。とするとインタープリターと同じになるのかなと思うのですが。 実行形式が単体のファイルとして出力されて単体として実行できるというのは従来のプログラム(C,Fortranなど)ですが、Pythonはそれがないわけですね。Ruby, Perlに近いものなのでしょうか。速度が求められる科学技術計算ではライブラリを導入して高速化できるということですが、どの程度かなと思いますが。その中間的なものがJavaなのかなと思いますが(半分実行ファイルみたな)。 たぶんベタな質問と思いますが、よろしくお願いします。

  • pythonについて

    私はプログラミングに興味があってmacでpython2.7を使っています。 python2.7でプログラムをファイルを書く方法が分かりません。 また、 python専用の本を持ってるのですが、「test.py」という部分があります。 “テキストエディット”、“AppleScript エディット”で保存するをクリックして 名前を「test、py」にできないのですが「test.py」にする必要はないのでしょうか? どなたかやり方を教えてください。

  • バッチ処理するには?

    初心者です。 DOS窓で動くデータの変換プログラムでフォルダ内の膨大なデータ(ファイル名ばらばら)をバッチ処理でまとめて変換したいんですが、時間も無くどうしていいかわかりません。 例えばd:\export.exe d:\dat\sozaia001.dat > d:\dat\sozai001.text というふうに手入力でやってます。 これを一括処理できますでしょうか? よろしくお願いします。

  • pythonでバッチファイルを実行

    こんにちわ。pythonを使っています。pythonで外部プログラム(バッチファイル)を実行させたいのですが記述の方法がわかりません。是非 お力をお貸しください。

  • Pythonのモジュールやデータ型はどこにある?

    Pythonの本を読んでいて、 モジュールの内部構成の説明が無かったので質問です。 randomモジュールやdatetimeモジュール、date型などは Pythonのどこに格納されているのでしょうか? 実際にファイルの中身を見てどのような記述がされているのか確認したいです。 ちなみに環境は、 mac os X 10.6.8 にデフォルトで入っていたPythonを使っています。 よろしくお願いします。