前提
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