address = ('http://www.somesite.com/article.php?page=' +numb)
html = urllib2.urlopen(address).read()
regex = re.findall(r"([a-f\d]{12})", html)

Wenn Sie das Skript ausführen, sieht die Ausgabe ähnlich aus:

['aaaaaaaaaaaa', 'bbbbbbbbbbbb', 'cccccccccccc']

Wie lasse ich das Skript diese Ausgabe drucken (beachten Sie den Zeilenumbruch):

aaaaaaaaaaaa
bbbbbbbbbbbb
cccccccccccc

Irgendeine Hilfe?

-3
J.Doe 18 Aug. 2015 im 23:33

3 Antworten

Beste Antwort

Drucken Sie einfach regex wie folgt aus:

print "\n".join(regex)

address = ('http://www.somesite.com/article.php?page=' +numb)
html = urllib2.urlopen(address).read()
regex = re.findall(r"([a-f\d]{12})", html)
print "\n".join(regex)
0
BigOther 18 Aug. 2015 im 20:36

re.findall() gibt eine Liste zurück. Sie können also entweder die Liste durchlaufen und jedes Element einzeln ausdrucken:

address = ('http://www.somesite.com/article.php?page=' +numb)
html = urllib2.urlopen(address).read()
for match in re.findall(r"([a-f\d]{12})", html)
    print match

Oder Sie können tun, was @bigOTHER vorschlägt, und die Liste zu einer langen Zeichenfolge zusammenfügen und die Zeichenfolge drucken. Es macht im Wesentlichen das Gleiche.

Quelle: https://docs.python.org/2/library/re .html # re.findall

re.findall (Muster, Zeichenfolge, Flags = 0) Gibt alle nicht überlappenden Übereinstimmungen des Musters in der Zeichenfolge als Liste von Zeichenfolgen zurück. Die Zeichenfolge wird von links nach rechts gescannt, und Übereinstimmungen werden in der gefundenen Reihenfolge zurückgegeben. Wenn eine oder mehrere Gruppen im Muster vorhanden sind, geben Sie eine Liste der Gruppen zurück. Dies ist eine Liste von Tupeln, wenn das Muster mehr als eine Gruppe hat. Leere Übereinstimmungen sind im Ergebnis enthalten, sofern sie nicht den Beginn einer anderen Übereinstimmung berühren.

1
Joe Young 18 Aug. 2015 im 20:41

Verwenden Sie join für das Ergebnis:

"".join("{0}\n".format(x) for x in re.findall(r"([a-f\d]{12})", html)
0
isosceleswheel 18 Aug. 2015 im 20:42