[解決済み] (Python) AttributeError: 'NoneType' オブジェクトには 'text' という属性がありません。
2022-02-02 22:53:27
質問
コード内のURLからxmlをパースする際に、以下のようなエラーが発生します。XMLは巨大なので掲載しません。リンクは以下のコード内にあります。
ERROR
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-70-77e5e1b79ccc> in <module>()
11
12 for child in root.iter('Materia'):
---> 13 if not child.find('EmentaMateria').text is None:
14 ementa = child.find('EmentaMateria').text
15
AttributeError: 'NoneType' object has no attribute 'text'
マイコード
url = 'http://legis.senado.leg.br/dadosabertos/senador/4988/autorias'
import requests
from xml.etree import ElementTree
response = requests.get(url, stream=True)
response.raw.decode_content = True
tree = ElementTree.parse(response.raw)
root = tree.getroot()
for child in root.iter('Materia'):
if child.find('EmentaMateria').text is not None:
ementa = child.find('EmentaMateria').text
for child_IdMateria in child.findall('IdentificacaoMateria'):
anoMateria = child_IdMateria.find('AnoMateria').text
materia = child_IdMateria.find('NumeroMateria').text
siglaMateria = child_IdMateria.find('SiglaSubtipoMateria').text
print('Ano = '+anoMateria+' | Numero Materia = '+materia+' | tipo = '+siglaMateria+' | '+ementa)
何を見落としているのでしょうか? ありがとうございます。
解決方法は?
をチェックする代わりに
child.find('EmentaMateria').text
は
None
を確認する必要があります。
child.find('EmentaMateria')
は
None
を最初に指定します。
また、返り値を格納するために
child.find('EmentaMateria')
を2回呼び出さないようにするためです。
最後に
ementa
の場合、デフォルト値は
child.find('EmentaMateria')
は
None
そうでなければ、あなたの
print
関数が初期化されていない変数を参照することになります。
変更します。
if child.find('EmentaMateria').text is not None:
ementa = child.find('EmentaMateria').text
になります。
node = child.find('EmentaMateria')
if node is not None:
ementa = node.text
else:
ementa = None
あるいは、組み込みの関数
getattr
を使えば、一時変数なしで同じことができます。
ementa = getattr(child.find('EmentaMateria'), 'text', None)
関連
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Pythonコンテナのための組み込み汎用関数操作
-
任意波形を生成してtxtで保存するためのPython実装
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み] Pythonで、あるオブジェクトが反復可能かどうかを判断するにはどうしたらいいですか?
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み] Pythonでnullオブジェクトを参照する
-
[解決済み] AttributeError: 'NoneType' オブジェクトには 'something' という属性がありません」と表示されるのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?