其他人提供了正则表达式解决方案,这些解决方案很好,但有时可能会出现意外行为。
如果页面完全如您的示例中所示,那就是:
- 不存在其他 HTML 标记 - 只有
<html>
and<pre>
标记
- 行数始终一致
- 行间距始终保持一致
然后像这样的简单方法就可以了:
my_text = """<html>
<pre>
A Short Study of Notation Efficiency
CACM August, 1960
Smith Jr., H. J.
CA600802 JB March 20, 1978 9:02 PM
205 4 164
210 4 164
214 4 164
642 4 164
1 5 164
</pre>
</html>"""
lines = my_text.split("\n")
title = lines[4]
journal = lines[6]
author = lines[8]
date = lines[10]
如果不能保证行间距,但可以保证只需要;内的前四个非空白行<html><pre>
。
import pprint
max_extracted_lines = 4
extracted_lines = []
for line in lines:
if line == "<html>" or line == "<pre>":
continue
if line:
extracted_lines.append(line)
if len(extracted_lines) >= max_extracted_lines:
break
pprint.pprint(extracted_lines)
给出输出:
['A Short Study of Notation Efficiency',
'CACM August, 1960',
'Smith Jr., H. J.',
'CA600802 JB March 20, 1978 9:02 PM']
不要在可以进行简单字符串操作的地方使用正则表达式。