2012-04-04 2 views
0

Ich suche nach den folgenden Zeilen aus einer unordentlichen HTML-Datei kommen zu suchen:Wie re.compile verwenden, um Strings mit gemeinsamen Bereichen in der Mitte

<span id="fooPack1_xpl01_name11">150.00 FTL</span> 
    <span id="fooPack1_xpl02_name11">350.00 FTL</span> 
    <span id="fooPack1_xpl03_name11">250.00 FTL</span> 
    <span id="fooPack1_xpl04_name11">230.00 FTL</span> 

ich BeautifulSoup verwenden und wieder die Saiten zu suchen und finden :

 tags = soup.find_all('span', id=re.compile(r'[fooPack1_xpl04_name11]\d+')) 

Aber offensichtlich der gemeinsame Teil dieser Zeichenfolge ist am Anfang und am Ende, mit dem Teil immer in der Mitte zu verändern. Wie kann ich mein Suchmuster so umstrukturieren, dass es nach "fooPack1_xpl" + (andere Zeichenkette) + "_ name11" sucht

Danke.

// EDIT //

Wenn ich Abfrage folgende:

<span id="FullView1_spl02_Stack_4">03/04/12</span> 
    <span id="FullView1_spl03_Stack_4">01/03/11</span> 
    <span id="FullView1_spl04_Stack_4">02/25/02</span> 
    <span id="FullView1_spl05_Stack_4">07/16/04</span> 
    <span id="FullView1_spl01_Stack32">999.00 SPL</span> 
    <span id="FullView1_spl02_Stack82">150.00 XPP</span> 
    <span id="FullView1_spl03_Stack82">350.00 XPP</span> 
    <span id="FullView1_spl04_Stack82">450.00 XPP</span> 
    <span id="FullView1_spl05_Stack82">550.00 XPP</span> 
    <span id="FullView1_spl06_Stack82">650.00 XPP</span> 
    <span id="FullView1_spl07_Stack22">888.00 SPL</span> 
    <span id="FullView1_spl202_stckFriendName">Red Car</span> 
    <span id="FullView1_spl203_stckFriendName">Green Car</span> 
    <span id="FullView1_spl204_stckFriendName">Blue Car</span> 

mit:

 foo=soup.findAll('span', id=re.compile(r'FullView1_spl\d+_stack82')) 

ich folgendes Ergebnis:

<span id="FullView1_spl204_stckFriendName">Blue Car</span> 
    <span id="FullView1_spl02_Stack82">150.00 XPP</span> 
    <span id="FullView1_spl03_Stack82">350.00 XPP</span> 
    <span id="FullView1_spl04_Stack82">450.00 XPP</span> 
    <span id="FullView1_spl05_Stack82">550.00 XPP</span> 
    <span id="FullView1_spl06_Stack82">650.00 XPP</span> 

Offensichtlich Ich brauche das Top e nicht lement erkannt werden. Das ist also das einzige Problem.

Antwort

0

Sie sind fast da. Sie wollen für fooPack1_xpl gefolgt von Ziffern von _name11 followd suchen, so wie etwa:

re.compile(r'fooPack1_xpl\d+_name11') 

Bitte beachte, dass ich eine \d+ setzen nur, wo Sie die Ziffern erwarten, und die Zeichenkette Sie sonst die Suche.

+0

Hallo, ich versuche, zuerst die Zeilen zu finden, die diese Zeichenfolgen in der HTML-Datei enthalten, und extrahieren Sie dann nur den "230,00 FTL" -Teil. Die ursprüngliche Frage ist hier: http://stackoverflow.com/questions/10019954/extracting-a-specific-string-out-an-html-document Aber durch die Änderung der re.compile Abschnitt, es scheint nicht wie ich bin die richtigen Zeilen :( – symbolix

+0

Was ist der Punkt, diese Frage zu stellen, wenn Sie bereits eine doppelte Frage dort zurück gefragt haben? Ich habe die spezifische Frage beantwortet, die Sie gefragt, das heißt, wie 'fooPack1_xpl' + Ziffern + '_name11' übereinstimmen. Details zum Extrahieren sind bereits in der Antwort auf deine vorherige Frage angegeben: –

+0

Entschuldigung, ich wollte dieses andere Thema einfach nicht zu beschäftigt machen, während ich die Chance hatte, mehr Informationen über die Regex-Bibliothek zu bekommen .. – symbolix

Verwandte Themen