2016-03-31 4 views
0

Ich habe einige Daten, die ich von einer Website gezogen habe. Dies ist der Code, den ich verwendet habe, um es zu greifen (mein tatsächlicher Code ist viel länger, aber ich denke, dass es das zusammenfasst).Wie erhalte ich eine Liste von Zeichenfolgen, die vertikal in einer Textdatei ausgedruckt werden sollen?

lid_restrict_save = [] 
for t in range(10000,10020): 

    address = 'http://www.tspc.oregon.gov/lookup_application/' + lines2[t] 

    page = requests.get(address) 

    tree = html.fromstring(page.text) 

    #District Restriction 
    dist_restrict = tree.xpath('//tr[11]//text()') 
    if u"District Restriction" in dist_restrict: 
     lid_restrict_save.append(id2) 

Ich versuche, diese Liste zu exportieren:

print lid_restrict_save 
[['5656966VP65', '5656966RR68', '56569659965', '56569658964']] 

in eine Textdatei.

f = open('dis_restrict_no_uniqDOB2.txt', 'r+') 

for j in range(0,len(lid_restrict_save)): 
    s = ((unicode(lid_restrict_save[j]).encode('utf-8') + ' \n')) 
    f.write(s) 

f.close() 

Ich möchte den Text wie folgt aussehen kommen:

5656966VP65 
5656966RR68 
56569659965 
56569658964 

Dieser Code funktioniert aber nur, wenn ich begann die range von 0.

f = open('dis_restrict.txt', 'r+') 

for j in range(0,len(ldob_restrict)): 
    f.write(ldob_restrict[j].encode("utf-8") + ' \n') 

f.close() 

Als ich versucht habe, Ändern des Codes Ich erhalte diesen Fehler:

"AttributeError: 'list' object has no attribute 'encode'."

Ich habe die Vorschläge von here, here und here versucht, aber ohne Erfolg.

Wenn jemand irgendwelche Hinweise hat, würde es sehr geschätzt werden.

+0

'lid_restrict_save' ist eine verschachtelte Liste. Verwenden Sie 'lid_restrict_save = lid_restrict_save [0]' –

+0

@ Farhan.K Ich bekomme 'IndexError: Listenindex außerhalb des Bereichs '. Sollte das innerhalb der Schleife oder unterhalb von 'lid_restrict_save = []' verschachtelt sein? – otteheng

Antwort

0

lid_restrict_save ist eine verschachtelte Liste, daher können Sie das erste Element nicht codieren, da es keine Zeichenfolge ist.

könnten Sie auf die TXT-Datei schreiben dies mit:

lid_restrict_save = [['5656966VP65', '5656966RR68', '56569659965', '56569658964']] 

lid_restrict_save = lid_restrict_save[0] # remove the outer list 

with open('dis_restrict.txt', 'r+') as f: 
    for i in lid_restrict_save: 
     f.write(str(i) + '\n') 
+0

Funktioniert perfekt. – otteheng

+0

Dies ist leicht unabhängig. Ich exportiere eine Reihe von Elementen (Name, Arbeitgeber, etc.) in eine CSV und sie sind eine verschachtelte Liste. Ich habe 'lname = lname [0]' verwendet und die äußeren Klammern verschwanden, aber dann wurde nur ein Element ausgedruckt. Weißt du, wie man die Klammern verschwinden lässt, aber auch über "Bereich" 10000-10020 druckt? – otteheng

+0

Sie müßten 'lname = lname [0]' _before_ the loop setzen. Meine Vermutung ist, dass Sie es in die Schleife setzen? –

Verwandte Themen