2016-05-23 5 views
0

ich den folgenden Code in Python habe:mit Strings und Listen in Python zu kämpfen

soup = BeautifulSoup(sock,'html.parser') 
for string in soup.stripped_strings: 
    string = string.encode('ascii','ignore') 
    print string 

Diese Drucke:

the 
cat 
has 
nine 
lives 

für ungefähr 47 verschiedene Saiten weiter. Wie bekomme ich diese separaten Strings in eine Liste? dh (die, Katze hat neun, lebt)

Wenn ich benutze:

print list(itertools.chain(string)) 

Es druckt:

['c', 'a', 't'] 
etc... 

gleiche passiert, wenn ich beitreten verwenden ...

Wenn dies eine doppelte Frage ist, bitte posten Sie einfach einen Link, um es zu finden, ich suchte überall und konnte keine Antwort finden.

Antwort

1

Sie könnten list comprehension verwenden:

[s.encode('ascii','ignore') for s in soup.stripped_strings] 

Liste Verständnis ist eine prägnante Art und Weise eine Operation für jedes Element auf iterable anzuwenden und eine Liste aus dem Ergebnis zu erstellen:

>>> [x * x for x in range(5)] 
[0, 1, 4, 9, 16] 
0

Bitte beachten Lesen http://effbot.org/zone/python-list.htm für Listenverständnis.

Sie können auch Elemente zu einer vorhandenen Sequenz hinzufügen. Die Append-Methode fügt ein einzelnes Element am Ende der Liste hinzu, die extend-Methode fügt Elemente aus einer anderen Liste (oder einer Sequenz) am Ende hinzu und fügt ein Element in einen bestimmten Index ein und verschiebt die verbleibenden Elemente nach das Recht.

L.append(item) 
L.extend(sequence) 
L.insert(index, item) 

Sie eine for-Schleife verwenden können, und fügen Sie Elemente zu einer Liste ...

out = [] 
    for object in L: 
     out.append(function(object))