2016-04-23 12 views
1

私が知っているすべてを試しましたが、解決策が見つからないようです。リスト内の空白を削除するXPath

import csv 
import requests 
from lxml import html 
from itertools import izip 

list_names_atp = [] 
page = requests.get('http://www.atpworldtour.com/en/rankings/singles') 
tree = html.fromstring(page.content) 

list_rank_atp = [] 
for i in range(0,101): 
    result = tree.xpath('//*[@id="rankingDetailAjaxContainer"]/table/tbody/tr[%s]/td[1]/text()'%(i)) 
    list_rank_atp.append(result) 

list_names_atp = [] 
for i in range(0,101): 
    result1 = tree.xpath('//*[@id="rankingDetailAjaxContainer"]/table/tbody/tr[%s]/td[4]/a/text()'%(i)) 
    list_names_atp.append(result1) 

list_Final =[] 
for i in izip(list_rank_atp, list_names_atp): 
    uitkom = i 
    list_Final.append(uitkom) 

outfile = open("./tennis.csv", "wb") 
writer = csv.writer(outfile) 
writer.writerow(["Rank", "Name"]) 
writer.writerows(list_Final)  

CSV出力はようになります。

enter image description here

しかし、私はとしてそれをしたい:ここ

enter image description here

+6

PNG画像として入力と出力が必要ですか? – usr2564301

+0

いいえ、画像はちょうど私がcsvのように見えるようにする方法を示すことでした – Depekker

答えて

2

いくつかの注意事項です:

  • XPathインデックスは、0ではなく、1から始まります。このため、最初のデータ行には空のエントリがあります。

  • あなたは、行番号が

をテキストの周りに、私は行(tr)を反復処理することをお勧めし、反復ごとに現在の行から必要なすべての情報を取得したいスペースを削除するために、Pythonのstrip()やXPathののnormalize-space()を使用することができます:

page = requests.get('http://www.atpworldtour.com/en/rankings/singles') 
tree = html.fromstring(page.content) 
outfile = open("./tennis.csv", "wb") 
writer = csv.writer(outfile) 

rows = tree.xpath('//*[@id="rankingDetailAjaxContainer"]/table/tbody/tr') 
writer.writerow(["Rank", "Name"]) 

for row in rows: 
    no = row.xpath('td[1]/text()')[0].strip() 
    name = row.xpath('td[4]/a/text()')[0] 
    writer.writerow([no, name]) 

outfile.close() 
0

あなたはスペースを削除するためにstrip()メソッドを使用できます。

関連する問題