質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

5426閲覧

リストごとに改行してcsvに書き込みたい

k0908

総合スコア102

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/07/25 08:42

リストごとに改行してcsvに書き込みたいです。

f = open('user.csv', 'a') writer = csv.writer(f, lineterminator='\n') #長いリストが取れる content = [tag.string for tag in soup.find_all("td")] item = [content[i:i +3] for i in range(len(content))] writer.writerow(item) f.close()

とコードを書いて実行しましたが、

“[‘John’, ’23, ‘A’]”,”[’Tom’, '35', ‘B’]”,”[’Juddy’, ’39’, ‘A’]”

のように分割されたリストがcsvファイルに書き込まれました。

John, 23, A Tom, 35, B Juddy, 39, A

のようにリストごと改行してファイルに書き込みたいのですが、どのように修正を加えれば良いのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

writerow()ではなくwriterows()をつかってください。

python

1import csv 2 3from bs4 import BeautifulSoup 4 5html = """ 6<table class=""> 7<tr> 8<th>名前</th> 9<th>年齢</th> 10</tr> 11<tr> 12<td>John</td> 13<td>33</td> 14<td>C</td> 15</tr> 16<tr> 17<td>masaki</td> 18<td>31</td> 19<td>A</td> 20</tr> 21<tr> 22<td>Jon</td> 23<td>12</td> 24<td>B</td> 25</tr> 26<tr> 27<td>Ohn</td> 28<td>22</td> 29<td>A</td> 30</tr> 31</table> 32""" 33 34soup = BeautifulSoup(html, "html.parser") 35 36content = [tag.string for tag in soup.find_all("td")] 37items = [content[i:i+3] for i in range(0, len(content), 3)] 38 39with open("tmp.csv", "w", encoding="utf-8") as f: 40 writer = csv.writer(f) 41 writer.writerows(items)

投稿2018/07/25 08:55

crimnut

総合スコア380

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k0908

2018/07/25 09:38

ありがとうございます。提示してくださった方法で試してみると、 John,33,C A,31,masaki 12,Jon,B のように、本来の表の順番とはバラバラな形でcsvに書き込まれています。 <td>の順にcsvに書き込みたいのですが、どのようにコードを追加したら、意図したことができますか?もしお分かりでしたらお願いします。
k0908

2018/07/25 09:46

すみません、うまくできました!
Ixtab

2021/10/01 15:53

以下のようにデリミタに\nを入れることで解決できると思いますよ。 ちなみにデリミタの意味は"区切り文字" writer = csv.writer(f, delimiter="\n") writer.writerow(el)
guest

0

python

1writer.writerows(item)

を試してください。

投稿2018/07/25 08:48

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問