@hiromax358 (Hiro)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

初心者です。strip()で改行が消えないのですが・・・

初心者です。Pythonでstrip()コードで改行が消えないのですが・・・

エラーは次の様になっております。

宜しくお願いします。


AttributeError Traceback (most recent call last)
in
24
25 #textを改行ごとにリストに入れて、前後の空白を削除する
---> 26 ret = ret.strip()
27
28 print(ret)

AttributeError: 'list' object has no attribute 'strip'

モジュールのインポート

from bs4 import BeautifulSoup
import urllib.request as req

対象のサイトURL

url = "対象のサイトURL"

URLリソースを開く

response = req.urlopen(url)
soup = BeautifulSoup(response,'html.parser')

インスタンスの作成

必要な要素とclass名

name = soup.find_all("div", class_="search_result")

取得したタイトル情報を出力

ret = []
for t in name:
ret.append(t.text)

textを改行ごとにリストに入れて、前後の空白を削除する

ret = ret.strip()

print(ret)

0 likes

2Answer

ご質問に関係ない点でいくつかアドバイスさせていただきます。

質問されるときは、起きている問題と関係ないコードをなるべく削ってから投稿することをおすすめします。自力で問題を突き止めるためにも必要な手順です。たとえば今回発生したエラーを再現するには

ret = ['text1', 'text2', 'text3']
ret.strip() # => AttributeError: 'list' object has no attribute 'strip'

この2行にまで切り詰めることができます。


コードを貼るときは以下のようにバッククオート(` のこと。 Shift+@ で入力できる)3つで囲むときれいに表示できます。特に Python のコードはそのまま貼るとインデントが消えて意味が変わってしまうのでこれを使ってください。

```python
print('hello')
```

print('hello')

同じような質問を続けてする場合は、前回の質問をクローズ済みにして、「新しく質問し直します」などとコメントを残すと回答者に親切です。また参考になった回答には LGTM を押してあげてください。

6Like

Comments

  1. @hiromax358

    Questioner

    ご返答、有難うございます。
    色々、質問の仕方やコードの貼り方のアドバイス勉強になりました。

    まだまだ、至らない点がありQittaの利用方法も分からない事だらけですが
    宜しくお願いします。

https://qiita.com/hiromax358/questions/cdc8f1ac60cc697a21d1 こちらの質問で @Adaachill さんが回答されているように、 ret = ret.strip()ret = [i.strip() for i in ret] に置き換えればいいです。

解説

ret には文字列のリストが代入されています。 .strip() は文字列から改行(など)を取り除くメソッドなのでリストに対して呼び出すことはできません。リストに入っている文字列それぞれに .strip() を呼び出す必要があります。

これは Python の リスト内包表記[i.strip() for i in ret] と書けます。日本語で表現するなら「リスト ret に入っている文字列を順に変数 i に入れて、 i.strip() を実行し、その結果からなる新しいリストを返す」となります。

2Like

Comments

  1. @hiromax358

    Questioner

    解りやすい回答、有難うございます。
    勉強になりました。
    まだまだ、勉強不足なので基礎から始めていきたいと思います。

Your answer might help someone💌