【发布时间】:2018-03-31 08:15:52
【问题描述】:
我有一个半结构化的 .txt 文件。该文件如下所示:
<tags>
blabla<text>
I want this
</text>
blabla<text>
And this
</text>
bla<text>
and this
</text>blabla
</tags>
我想获取 <text> 标签内的文本。我已经设法使用字符串分区和替换来做到这一点,但我认为它不是非常有效或漂亮。
这是我的代码:
with open('collection.txt') as f:
read_data = f.read()
text1 = read_data.partition("<text>")[2].partition("</text>")[0]
temp1 = read_data.replace(text1,'').replace('<text>','',1).replace('</text>','',1)
text2 = temp1.partition("<text>")[2].partition("</text>")[0]
temp2 = read_data.replace(text2,'').replace('<text>','',2).replace('</text>','',2)
text3 = temp2.partition("<text>")[2].partition("</text>")[0]
BeautifulSoup、元素树和其他 XML 解析器不起作用。 关于如何改进我的代码的任何建议?我试过编译一个正则表达式,但无济于事。
【问题讨论】:
-
使用正则表达式!如果您以前没有使用过它,这有点学习曲线,但对于这样的项目来说绝对值得
-
@Aran-Fey 我已经尝试过包括 BeautifulSoup 在内的那些解析器,但我无法让它工作,可能是因为文件是半结构化的?
-
@EriktheRed 我认为正则表达式是我想要解决的方法,但到目前为止我尝试过的每个正则表达式都打印空白。
-
不建议将正则表达式用于结构化/嵌套解析。对于更复杂的示例,它很快就会失败。
标签: python beautifulsoup text-extraction