前提・実現したいこと
csvファイルを読み込もうとしているのですが、データがあまり綺麗でなく、
カンマ区切りの位置が正しく反映されず、以下のようになってしまっています。
A列 | B列 | C列 | D列 |
---|---|---|---|
1 | 3あいうえお | かきくけこ | a |
2 | 3,3,3あいうえお, かきくけこ, b | ||
3 | 1,2,3さしすせそ, たちつてと, c |
セル内の文字情報を確認してみると、例えば2行目は
"3,3,3あいうえお, かきくけこ, b"
のようにすべてがダブルクォーテーションで括られてしまっていることが原因のようです。
上のデータを下のかたちにpythonで整形をし、csvファイルで出力し直したいです。
A列 | B列 | C列 | D列 |
---|---|---|---|
1 | 3あいうえお | かきくけこ | a |
2 | 3,3,3あいうえお | かきくけこ | b |
3 | 1,2,3さしすせそ | たちつてと | c |
該当のソースコード
python
import csv file = "test.csv" f = open(file) line = f.readline() word_list = [] while line: line = line.split(",") word_list.append(line) line = f.readline() f.close with open("test_data.csv", "w", newline="") as f: w = csv.writer(f, delimiter=",") for i in word_list: w.writerow(i)
試したこと
上記のコードで単純にカンマで文字を区切る方法は試してみましたが、それだと「3,3,3あいうえお」といった文字情報も「3」,「3」,「3あいうえお」といったように分かれてしまいます。
うまくデータを整形する方法はありますでしょうか。
どうぞよろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
A列のナンバリングは説明上のものか、実際に"test.csv"の第1項として記録されているのか、どちらでしょうか。また、B列の文字列に含まれるカンマの法則性はどのようなルールがあるのでしょうか。(例.先頭6文字以内にあるカンマはB列の文字列。B列の文字列の長さは6文字以上13文字以内。等) B列の編集次第で正しく切り分けられると思います。
回答にも書きましたが、CSVファイルをテキストエディターに貼り付けて、実際、どうなっているのか、追記(ペースト)願います。
説明が足りておらずすみません。A列は実際に第一項としてあります。B列内にカンマがある場合としては「1,2,3」のように数値が3つ連続で続くときです。B列の長さは6文字以上15文字以下でした。ありがとうございます。

回答3件
あなたの回答
tips
プレビュー