2011-11-19 118 views
1

我有一個這樣的字符串:Python的分割字符串

<td casd2" aasdeft" class="satyle3"> 
    <b><a asddidasd?ct=Peasds&amp;fasdaao=Monsdar 
    &amp;pID=19635"... 

我需要19635.

有人能幫助我嗎?

+1

是來自HTML文檔的字符串嗎?它看起來幾乎像HTML一樣。 –

+0

與此有關嗎? –

+3

是的,我認爲是這樣的:如果它是html,那麼除了正則表達式外,你可以(實際上,我甚至會說你應該)使用解析器。 –

回答

3

我會用正則表達式來進行更巧妙的解決辦法:

>>> import re 
>>> s = '<td casd2" aasdeft" class="satyle3"><b><a asddidasd?ct=Peasds&amp;fasdaao=Monsdar&amp;pID=19635"...' 
>>> match = re.search(".*pID=(\d+).*",s) 
>>> if match: 
... match.group(1) 
... 
'19635' 

尼斯和簡單,不是嗎?

+1

我想're.search'會更好,更簡單。在這種情況下 – loudandclear

+0

沒有太大的區別,但你是對的。編輯! – juliomalegria

+0

match.group(1) AttributeError:'NoneType'對象沒有屬性'group' –

3

按照給定的僅有的一些資料,這是我想接近它:

import re 

someString = ... # your original string 

m = re.search(r"pID=(\d+)", someString) 
pid = m.group(1) 
1

如果您解析HTML/XML,最好使用合適的工具。 re可以快速而骯髒地完成工作;但是當你稍後擴展(沒有死的軟件總是會發展的)時,會回來咬你,或者你需要處理其他形式的相同數據的表示。

Beautiful Soup在python中提供了很好的解析例程 - 值得通過學習曲線。