2016-04-18 10 views
0

Frustriert zu sagen, ich bin ratlos auf diesem. Ich Extrahieren von Text aus einem Absatz:Konvertieren von Liste in Zeichenfolge, während es Wort für Wort

paragraphs = re.findall(r'(<p(.*?)</p>)', html) 

Dann möchte ich die Tags verschrotten und halten nur den Absatztext, Wort für Wort:

paragraphs = re.sub(r'\<.*?\>', '', paragraphs) 

Problem ist, dass Python eine Zeichenfolge erwartet. Wenn ich es richtig verstehe, muss ich zuerst "Absätze" in eine Zeichenfolge umwandeln. Aber wenn ich das tue:

... Ich bekomme den Text Buchstabe für Buchstabe, die Wörter sind auseinander gebrochen. Nun, ich bin neu in Python und das verwirrt mich.

1. Frage: Warum ist nicht "Absätze" eine Zeichenfolge zu beginnen?

2. Frage: Wie kann ich „Absatz“ in eine Zeichenfolge konvertieren, sie Wort für Wort zu halten, wie zum Beispiel:

paragraph = ['Two', 'words'] 

Antwort

2

re.findall() gibt eine Liste Streichhölzer. Sie benötigen stattdessen re.search().

Eine bessere Option allerdings wäre ein HTML verwenden Parser, wie BeautifulSoup:

>>> from bs4 import BeautifulSoup 
>>> 
>>> data = '<p>some text here</p>' 
>>> soup = BeautifulSoup(data, "html.parser") 
>>> soup.p.get_text().split() 
[u'some', u'text', u'here'] 
Verwandte Themen