前提
Pythonにおいて、カンマで区切られたテキストファイルから、2列のcsvファイルを生成しようとしていますが、1列のcsvファイルになってしまいます。
実現したいこと
以下の手順で、2列のcsvファイルを生成したいと思います。
①カンマで区切られたテキストファイルを読み込む。
②余計な文字を取り除き、配列にテキストファイルを加える。
③配列をそのままcsvファイルに変換してしまうと、1文字ずつの挿入になってしまうので、二次元配列に入れる。
④ ③をsklearnのtrain_test_splitで、データを分割(最終的に機械学習用のデータとして使用するため)し、出力。
しかし、出力されたcsvの先頭と末尾にダブルクォーテーションがついているためなのか、1列のcsvになってしまいます。
発生している問題・エラーメッセージ
出力されたcsvは以下のようになります。(列が長くなるため、テストデータのみ記載) 1列のcsvファイルになってしまいます。 # cli_test.csv "静岡と言ったらお茶,3" "インフルエンザの予防接種を受けた。,2" "ハワイは日本人が多い,5" "お風呂に入る。,4" "睡眠はきちんととった。,4"
該当のソースコード
python
1# coding: shift_jis 2 3import csv 4import numpy as np 5from sklearn.model_selection import train_test_split 6 7sentences = [] 8 9with open('test_data.txt') as f: 10 sample_txt = f.readlines() 11 12for s in sample_txt: 13 text = s.translate(str.maketrans({"\u3000":"","\n":""})) 14 sentences.append(text) 15 16# 二次元は配列に入れないと、csvファイルに出力するとき、各セルに一文字ずつ出力されてしまう。 17sentences_column = len(sentences) 18new_sentence = np.array(sentences).reshape(sentences_column,1) 19 20# sklearnのtrain_test_splitで、データを分割 21news_train, news_test = train_test_split(new_sentence, shuffle=True) # 訓練用とテスト用に分割 22# 何も指定していない場合は、25%がテストデータ 23news_path = "./test_data/" 24# csvファイルを保存するパス 25 26with open(news_path+"cli_train.csv", "w" ,encoding="utf-8" ,newline='') as f: 27 writer = csv.writer(f) 28 writer.writerows(news_train) 29 # 訓練データを"news_train.csv"に保存 30 31with open(news_path+"cli_test.csv", "w" ,encoding="utf-8",newline='') as f: 32 writer = csv.writer(f) 33 writer.writerows(news_test) 34 # テストデータを"news_test.csv"に保存 35 36#test_data.txt 37カレーを食べた。,1 38インフルエンザの予防接種を受けた。,2 39あなたに渡す。,3 40お風呂に入る。,4 41太郎の靴だ,5 42ビタミン剤を買う,1 43川で泳ぐ,1 44阿蘇山が噴火した。,3 45チョコレートとクッキーだ,5 46人気者の姉,5 47ハワイは日本人が多い,5 48新型の携帯電話を買う,2 49お酒が好きだ。,2 50トムの妹はサリーだ。,2 51静岡と言ったらお茶,3 52飛行機で九州に行く。,3 53睡眠はきちんととった。,4 54数学が得意だ,1 55半角 スペース,1 56全角 スペース,2
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
2022/04/07 03:53
2022/04/07 04:00
2022/04/07 04:02
2022/04/08 00:18