pythonでfind_the(u)という関数を作りました。
以下のように、c.attrib["id"] == id_m となった時に関数を再帰的に呼び出したいのですが、
child_id += ""+find_the(c)
TypeError: must be str, not NoneType
というエラーが出てしまいます。
python
1child_id = "" 2for m in range(len(list00)): 3 id_m = list00[m] 4 for c in es1: 5 if c.attrib["id"] == id_m: 6 child_id += ""+find_the(c) 7 return child_id 8
c.attrib["id"] == id_m となった時に関数を再帰的に呼び出すには、
どのようにすれば良いか教えてください。
今回の問題点もわかりません。
すみません。
よろしくお願い致します。
find_the関数の提示もお願いします。
es1 には何が入っているのですか?
xmlファイルなのですが、
社外に出すとよく無いかな、と思い、
中途半端な質問の仕方になってしまいました。
すみません。
ということは、テキストストリームですか?
そうです!
テキストストリームを扱うクラスで、attribという属性があるものを存じ上げないので、利用されているモジュールをご提示ください。
import xml.etree.ElementTree as ET
これです。
すみません。
テキストではなくて、Element が入っているということですね?
find_the 関数はここで終わりですか?
そういうことです。
関数はここで終わりです。
となると、return 文が実行されない場合があるはず。
y_waiwai さんのご回答のとおりでは?
あ、もしかして、エラー文の意味がお分かりではないのかな?
たとえば、
"" + None
を実行すると、同じエラーが出ますよ。
エラー文の意味がよく分からず、教えていただきたいです。
なぜ、
""+None
でエラーが出るのかが、分からないです。
文字列に、None を足すことはできないよ、ということです。
文字列にNoneをなぜ足してはいけないか、については、なかなか興味深い疑問だと思いますが、話が長くなるので、それは別質問でも立てていただいて、ここはまるっと「そういうものだ」と理解してください。
なるほど。
わかりました。
細かく教えていただき、本当にありがとうございました!
ご解決されて何よりです。
解決されたのであれば解決済みにしていただけると。
回答2件
あなたの回答
tips
プレビュー