1

我正在处理一个包含第 1 项、第 2 项和第 3 项的 html 文件。我想删除第 2 项之后的所有文本。我可以在文件中找到第 2 项,如下所示:

Item2= re.compile (r'(Item 2)',re.I|re.S)
Item2match= Item2.findall(file)

但我不知道如何删除它后面的文字。

4

2 回答 2

0

只需使用字符串方法将html文本拆分并取第一部分;str.partition()工作更简单:

file.partition('Item 2')[0]

如果您也想保留Item 2文本,请使用:

''.join(file.partition('Item 2')[:2])

这里不需要使用正则表达式;您正在匹配文字文本。正则表达式是一种极富表现力和强大的工具,但如果有更简单的替代方案,请不要使用它。

演示:

>>> 'Some text with Item 2 in it'.partition('Item 2')[0]
'Some text with '
>>> ''.join('Some text with Item 2 in it'.partition('Item 2')[:2])
'Some text with Item 2'
于 2013-07-24T21:15:28.710 回答
0
>>> re.sub(r'(?s)(?<=Item&nbsp;2)(.*)', '', file)

例子:

>>> s
'Item&nbsp;2...feiugeogherger\nfjweifjwef\nsfjioweiefjwe'
>>> re.sub(r'(?s)(?<=Item&nbsp;2)(.*)', '', s)
'Item&nbsp;2'
于 2013-07-24T21:15:55.843 回答