python找到一个字符串&之前和之后的一切

时间:2012-06-25 09:48:57

标签: python find

我有一堆HTML,我每周从网站下载一次,需要从中获取一些信息,不知道从哪里开始。

我有大约100个这样的文件在文件中重复,并希望从中获取2行。

  
    数字2 - 电脑
    3天前6月22日,12日11,589个文件/ 4,363 MB

  
<td width="242"><div align="left"><span class="style9">
<span class="style9"><img src="pic.pn" width="32" height="32" border="0" style="vertical-align:text-top;" />number2 &nbsp;&#8209;&#8209;computer</span><br />
.....
<div align="left">License:<br />Backup:<br />Files:</div></td><td width="186" valign="top" nowrap><div align="left" nowrap>
<span class="black" nowrap><span class="black">Paid&nbsp;Unlimited</span>
<br />3&nbsp;days&nbsp;ago&nbsp;on&nbsp;Jun&nbsp;22,&nbsp;12<br />11,589 files / 4,363&nbsp;MB</span></td>
<td width="92" valign="top">&nbsp;</td></tr>
.....
</div></td>

2 个答案:

答案 0 :(得分:0)

首先,尝试从字符串中删除所有HTML标记。

>>> import re
>>> def remove_html_tags(data):
...     p = re.compile(r'<.*?>')
...     return p.sub('', data)
...
>>> stripped = remove_html_tags(unescape(html_source))
>>> stripped
u'\nnumber2 \xa0\u2011\u2011computer\n.....\nLicense:Backup:Files:\nPaid\xa0Unlimited\n3\xa0days\xa0ago\xa0on\xa0Jun\xa022,\xa01211,589 files / 4,363\xa0MB\n\xa0\n.....\n'

然后是普通搜索/分组/重新匹配的问题

unescape感谢Fredrik Lundh

这应该让你去。

答案 1 :(得分:0)

你需要做的是在文本的每一行后面放一个'\ n'(如果你把文件作为字符串加载,它就会那样。)你需要在文本中搜索那部分并以较短的形式保存文本。如果搜索和文本被正确的字符串替换,则下面的脚本可以工作

#insurt text to search and to be searched
search = '<td width="242"><div align="left"><span class="style9">\n<span class="style9"><img         src="pic.pn" width="32" height="32" border="0" style="vertical-align:text-top;" />number2 &nbsp;&#8209;&#8209;computer</span><br />\n.....\n<div align="left">License:<br />Backup:<br />Files:</div></td><td width="186" valign="top" nowrap><div align="left" nowrap>\n<span class="black" nowrap><span class="black">Paid&nbsp;Unlimited</span>\n<br />3&nbsp;days&nbsp;ago&nbsp;on&nbsp;Jun&nbsp;22,&nbsp;12<br />11,589 files / 4,363&nbsp;MB</span></td>\n<td width="92" valign="top">&nbsp;</td></tr>\n.....\n</div></td>\n'


text = 'a\n'+98*search+'\nb'


changed = 0
for x in range(len(text)):
  if text[x:x+len(search)] == search:
    if changed >= 2:
       text = text[0:x]+' '+text[x+len(search):] # to place a replacement text, switch ' ' for 'replacement text'
    changed += 1


print(text)