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

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

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

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

4557閲覧

Python、Seleniumを使って抽出したテキストの、改行を削除したい

hiranohirano

総合スコア33

Python 3.x

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

1クリップ

投稿2019/09/18 06:04

前提・実現したいこと

あるウェブページから、seleniumを使って、テキスト(数字)を抽出、改行を削除し、float型に変換させたいです。

発生している問題・エラーメッセージ

ValueError: could not convert string to float: '110.\n20\n5'

該当のソースコード

html

1<div class="aaa"> 2 <span class="bbb">110.</span> 3 <span class="ccc">20</span> 4 <span class="ddd">5</span> 5</div>

python

1driver = webdriver.Chrome() 2 3elem = driver.find_element_by_class_name('aaa').text #クラスaaaのテキストを抽出 4print(elem) #<span>ごとに改行された結果が出力される 5elem.rstrip('\n') #改行を削除 6print(elem) #改行の削除が反映されず、<span>ごとに改行された結果が出力される 7elem = float(elem) #エラー発生 ValueError: could not convert string to float: '110.\n20\n5' 8print(elem)

エラーの内容から、改行コードが邪魔をしていると考え、改行を削除するコードを追加しました。
しかし、改行を削除したところが反映されていません。
print出力した内容は以下のようになります。

110. 20 5 110. 20 5 ... ValueError: could not convert string to float: '110.\n20\n5'

試したこと

elem.rstrip('\n') #試したこと1(改行を削除) elem.replace('\n','') #試したこと2(改行を空白に変換) elem.strip() #試したこと3(スペース、タブ、改行を含む空白を削除)

上記の方法を試しましたが、全て同じ結果となり、うまく反映されませんでした。

補足情報(FW/ツールのバージョンなど)

以下のようなやり方ではなく、class名"aaa"のテキストを1回でまとめて抽出したいと考えています。

python

1elem_1 = driver.find_element_by_class_name('bbb').text 2elem_2 = driver.find_element_by_class_name('ccc').text 3elem_3 = driver.find_element_by_class_name('ddd').text 4elem = elem_1 + elem_2 + elem_3 5elem = float(elem)

解決方法が思い当たらないため、何かアドバイスいただけますと幸いです。
宜しくお願い致します。

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

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

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

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

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

t_obara

2019/09/18 07:56

replaceの仕様では、変換結果を返すもので、elemを書き換えるものではありません。
hiranohirano

2019/09/18 08:06

ありがとうございます!できました!
guest

回答1

0

ベストアンサー

たぶん、代入すればOKかなと。

python

1 2elem = elem.replace('\n','')

投稿2019/09/18 07:57

FiroProchainezo

総合スコア2401

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

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

hiranohirano

2019/09/18 08:10

代入して、出来ました。 もう一人の方のアドバイスで、replaceはelemを書き替えるものではないということで、すっきり理解できました。 ご回答いただきありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問