2011-11-19 166 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中提供了很好的解析例程 - 值得通过学习曲线。