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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

2回答

4725閲覧

地震のデータをreplaceするときにエラー

zenbo0114

総合スコア53

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2017/12/02 07:01

地震速報を取得したいのですが、<br/>など、邪魔なものが入ってしまうので、それを\nに置き換えて
改行したいのですがエラーが起きました

python

1import requests 2from urllib.request import urlopen 3from bs4 import BeautifulSoup 4 5hiraku = urlopen("http://www.jma.go.jp/jp/quake/") 6hiraita = BeautifulSoup(hiraku, "lxml") 7nuku = hiraita.findAll("table",{"class":"textframe"})[0] 8finish = nuku.findAll("td") 9finish = finish.replace("<br/>", "\n") 10print(finish)

エラーコード

Traceback (most recent call last): File "hogegege.py", line 9, in <module> finish = finish.replace("<br/>", "\n") File "/Users/zen/anaconda3/lib/python3.6/site-packages/bs4/element.py", line 1807, in __getattr__ "ResultSet object has no attribute '%s'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?" % key AttributeError: ResultSet object has no attribute 'replace'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?

回答よろしくお願いします

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

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

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

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

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

guest

回答2

0

finish = nuku.findAll("td")の返り値にreplaceメソッドがないからではありませんか。
せめてfinish = [l.replace("<br/>", "\n") for l in finish]とかの気がします。

投稿2017/12/02 07:15

mkgrei

総合スコア8560

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

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

zenbo0114

2017/12/02 07:20

そちらに変えたところ Traceback (most recent call last): File "hogegege.py", line 9, in <module> finish = [l.replace("<br/>", "\n") for l in finish] File "hogegege.py", line 9, in <listcomp> finish = [l.replace("<br/>", "\n") for l in finish] TypeError: 'NoneType' object is not callable となりました
mkgrei

2017/12/02 07:25

変なものが紛れ込んでいるようですね。 finish = [l.replace("<br/>", "\n") for l in finish if l is not None] そもそも、finish = nuku.findAll("td")の中身は何になっていますか。 print(finish)をした結果を教えていただけると理解が進むかもしれません。
zenbo0114

2017/12/02 07:27

[<td> 平成29年12月02日15時23分&amp;nbsp気象庁発表<br/>02日15時20分頃地震がありました。<br/>震源地は宮城県沖(北緯38.2度、東経141.3度)で、<br/>震源の深さは約70km、地震の規模(マグニチュード)は3.2と推定されます。<br/> 各地の震度は次の通りです。<br/> なお、*印は気象庁以外の震度観測点についての情報です。<br/> <br/> <pre> 宮城県  震度1  登米市中田町 </pre> この地震による津波の心配はありません。<br/> </td>] となります
mkgrei

2017/12/02 07:42

返り値がそもそも文字列ではないようですね。 finish = [l.text for l in finish] ライブラリの用意されたメソッドを使うとタグは全部処理されるようです。
zenbo0114

2017/12/02 07:54

回答ありがとうございました 無事解決いたしました
guest

0

自己解決

finish = str(finish)
を追加するだけでよかった

投稿2017/12/02 07:54

zenbo0114

総合スコア53

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

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

mkgrei

2017/12/02 07:55

それだと\tが大量に出現しませんか。 解決したのならよいのですが。
zenbo0114

2017/12/02 07:56

大丈夫そうです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問