2017-10-19 3 views
2

私はPythonでいくつかのhtml要素からいくつかのテキストを削り取るためのスクリプトを書いています。私が書いたスクリプトはそれを解析することができます。しかし、問題は、データがそれらの間の巨大なスペースで解析されていることです。 .strip()メソッドで試しましたが、結果に何の影響もありませんでした。どうすれば修正できますか?結果の間に巨大なスペースを取り除くことができません

HTML要素:

html=""" 
<div class="organisation-details"> 

    <div class="personnel shaded"> 
         <h3>KEY PERSONNEL</h3> 
         <p> 
           Director: Andrew Bickerton<br> 
           Director: Andrew Connor<br> 
           Office Manager: Tom Marchant<br> 
         </p> 
        </div> 

    <div class="company-type shaded"> 
         <h3>COMPANY TYPE</h3> 
         <p> 
                 Importer 
         </p> 
        </div> 

    <div class="company-details shaded"> 
         <h3>COMPANY DETAILS</h3> 
         <p> 
           Year Established: 1984 <br> 
                 VAT No: GB 413 3611 93<br> 
                 No of Employees: 1-20<br> 
         </p> 
        </div> 


</div> 
""" 

このスクリプト:

from lxml.html import fromstring 

tree = fromstring(html) 
for title in tree.cssselect(".organisation-details"): 
    key = title.cssselect("h3:contains('KEY PERSONNEL')+p")[0].text_content().strip() 
    details = title.cssselect("h3:contains('COMPANY DETAILS')+p")[0].text_content().strip() 
    ctype = title.cssselect("h3:contains('COMPANY TYPE')+p")[0].text_content().strip() 
    print(key,details,ctype) 

出力私がいる:

Director: Andrew Bickerton 
           Director: Andrew Connor 
           Office Manager: Tom Marchant Year Established: 1984 
                 VAT No: GB 413 3611 93 
                 No of Employees: 1-20 Importer 

私は後だ結果(もしくは近いもの) :

Director: Andrew Bickerton 
Director: Andrew Connor 
Office Manager: Tom Marchant 
Year Established: 1984 
VAT No: GB 413 3611 93 
No of Employees: 1-20 
Importer 

答えて

2

key,detailsおよびctypeには、文字列の途中に複数の行と空白が含まれているという問題があります。それらを改行で分割して各項目を削除する必要があります。ような何か:

for piece in key.split('\n'): 
    print(piece.strip()) 

detailsctypeのために繰り返します。

+0

あなたは宝石です。それはトリックでした。どうもありがとう。 – SIM

0

ブラウザがあなたにHTMLを提示すると、文字列の先頭と末尾の外部空白には何の注意も払われません。 Python(または他のプログラミング言語)は文字通り文字列の空白を取ります。偶然、私は昨日同様の状況で自分自身を困惑させた。

関連する問題