質問: csv.writer(f) ``` ### 試したこと テキストデータをCSV保存するようなアプローチもしましたが、できませんでした。
回答: 「txtデータの行を抽出し、CSVファイルへ保存する」とのことですが、 コードがやっていることが乖離しているように見えますので、 コードレベルでの修正および、アドバイスをさせていただきます。(ソースコードをそのまま回答するわけにはいかないので) まず状況の把握ですが、今ある状態は、どこかにtxtファイルがあり、関数load()では、そのtxtファイルから文字列を読み込み、csvファイルを作成し3行目のみ書き込むということですよろしかったでしょうか。 「コードレベルでの修正」 ・2~3行目は、何もしていないので、不要です。ちなみに、open('csv', 'r')ということで、csvファイルを読み込み('r')モードで開いていますが、これから作成するファイルなので読み込みモードでは開けません。 ・4行目はテキストファイルを書き込みモード('w')で開いていますが、読み込みたいはずなのでここは読み込みモード('r')で開きましょう。 ・5~6行目は4行目の`with open('txt',...) as f:`の中で動作しているのでインデントをつけましょう。 ・目的に対して望ましい動作はテキストファイルから文字列を読み込むということでしょう。なので、`f.read()`や`f.readline()`で読み込みましょう。 こちらのページが参考になると思います。 ⇒ https://yukun.info/python-file/ ・7~8行目はcsvを書き込みモードで開いていますが、一応6行目にすでにf.write()があります。これは必要なのでしょうか。また、`csv.writer`の`csv`はどこにも定義・宣言されていません。なので、エラーになります。 文法的な修正箇所は以上となります。 「アドバイス」 他の回答者さんも書いておられますが、するべきことを分けて、それぞれしたいことを調べてみましょう。 掲載いただいているソースコードを全体としてみると、「CSVファイルを読み込み、TXTファイルに書き込み、CSVファイルに書き込む」という動作をしています。質問者さんの目的にはあっていません。するべきことは、「TXTファイルを読み込み、(3行目だけどこかに格納して、)CSVファイルに書き込む」です。 ここではファイルを読み込んだり、書き込んだりします。 「python ファイル 読み込み」や「python ファイル 書き込み」で調べてみると出てきます。 途中で「3行目(指定した箇所)だけ取り出す」という動作が必要になるかと思いますが、 まずは読み込んだものをそのまま書き込んでみて、 それができるようになったら「3行目だけ取り出す」を追加してみると理解が進むと思います。 何か疑問点があればおっしゃってください。がんばりましょう!