BeautifulSoup: Geht einfach in ein Tag, egal wie viele umschließende Tags es gibt

Ich versuche, alle inneren HTML aus dem @ kratz<p> -Elemente in einer Webseite mit BeautifulSoup. Es gibt interne Tags, aber es ist mir egal, ich möchte nur den internen Text erhalten.

Zum Beispiel für:

<p>Red</p>
<p><i>Blue</i></p>
<p>Yellow</p>
<p>Light <b>green</b></p>

Wie kann ich extrahieren:

Red
Blue
Yellow
Light green

Weder.string Noch.contents[0] macht was ich brauche. @ Auch nic.extract(), da ich die internen Tags nicht im Voraus angeben muss - ich möchte mich mit allen möglichen Problemen befassen.

Gibt es in BeautifulSoup eine Methode, mit der Sie einfach das sichtbare HTML abrufen können?

----AKTUALISIEREN-----

Auf Empfehlung, versuchen:

soup = BeautifulSoup(open("test.html"))
p_tags = soup.findAll('p',text=True)
for i, p_tag in enumerate(p_tags): 
    print str(i) + p_tag

Aber das hilft nicht - es druckt aus:

0Red
1

2Blue
3

4Yellow
5

6Light 
7green
8