2017-06-28 4 views
0
import lxml.html 
strings = """<p> <!--startprint-->xyz <br>  
xyz <br> xyz </p>""" 
root=lxml.html.document_fromstring(strings) 
for e in root.iter() : 
    print(e.tag) 

すべての要素のタグ値を出力します。なぜタグ値を同じ文字列と比較できないのですか?

html 
body 
p 
<cyfunction Comment at 0x7f6819bb11b8> 
br 
br 

HTML文字列内のコメントがここに<!--startprint-->で、それのタグ値iは<cyfunction Comment at 0x7f6819bb11b8><!--startprint-->のタグ値を比較したい、<cyfunction Comment at 0x7f6819bb11b8>です。

import lxml.html 
strings = """<p> <!--startprint-->xyz <br>  
xyz <br> xyz </p>""" 
root=lxml.html.document_fromstring(strings) 
for e in root.iter() : 
    print(e.tag) 
    print(e.tag == "<cyfunction Comment at 0x7f6819bb11b8>") 

結果は以下のAAS:

html 
False 
body 
False 
p 
False 
<cyfunction Comment at 0x7f6819bb11b8> 
False 
br 
False 
br 
False 

はなぜ以下の通りではありません。<!--startprint-->については

html 
False 
body 
False 
p 
False 
<cyfunction Comment at 0x7f6819bb11b8> 
True 
br 
False 
br 
False 

、タグ値がなぜ<cyfunction Comment at 0x7f6819bb11b8><cyfunction Comment at 0x7f6819bb11b8>ある= <cyfunction Comment at 0x7f6819bb11b8>!?
なんて冗談ですか?

+0

'0x7f6819bb11b8'と、オブジェクト全体を比較することはできませんが、私は関数オブジェクトは、このように比較することができないと思いますメモリアドレスです。プログラムを実行するたびに変更されます。あなたが解決しようとしている問題は何ですか? – mzjn

答えて

0

これが要件を満たしているかどうかわかりませんが、関数名を取得してそれを関数であると比較することはできますか?Comment 以下はその実行例です。

>>> for e in root.iter() : 
...  try: 
...   e.tag.__name__ 
...  except: 
...   pass 
... 
>>> 'Comment' 

文字列を関数のように一致させることができ、commnetという名前の関数です。

あなたがそれらの属性を使用してそれらを比較することができますが、他の

関連する問題