2016-04-23 13 views
1

Ich habe alles versucht, was ich weiß, aber scheinen nicht die Lösung zu finden.XPath Entfernen von Leerzeichen in der Liste Python

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)  

Die CSV-Ausgabe sieht wie:

enter image description here

Aber ich will es so:

enter image description here

+6

Sie benötigen Eingabe und Ausgabe als PNG-Bilder? – usr2564301

+0

Nein, die Bilder sollten nur zeigen, wie ich es in csv sehen möchte – Depekker

Antwort

2

Hier sind einige Hinweise:

  • XPath-Index startet von 1, nicht 0. Deshalb haben Sie für die erste Datenzeile einen leeren Eintrag erhalten.

  • können Sie Python verwenden strip() oder XPath der normalize-space() Räume um die Zeilennummer zu entfernen, Texte

Ich würde durch Reihen iterieren vorschlagen (tr) und erhalten alle Informationen aus der aktuellen Zeile in jeder Iteration benötigt :

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

Sie können strip() -Methode verwenden, um Speicherplatz zu entfernen.

Verwandte Themen