2016-11-10 150 views
0

我最近遇到了Standard Generalized Markup Language。我已经从EMILLE/CIIL Corpus获得了SGML格式的语料库。这是该文集的文档:我想只提取存在于文件中的文本如何使用Python去除文本文件中的SGML标签?

EMILLE Corpus Documentation

。来自文档的语料库的编码和标记信息是:

文本被编码为双字节Unicode文本。有关Unicode的更多信息。 使用1级CES兼容标记在SGML中标记文本。每个文件还包括一个完整的标题,它指定了文本的出处。

我很难剥离这些标签。我尝试了'正则表达式'以及'美丽的汤',但它不起作用。这是示例文本文件。我想保留的语言是旁遮普语。

Sample text file

+0

这是XML和有多个XML解析器在那里,你可以使用。在python中,我最喜欢'lxml' - 它是'libxml'库的前端,并且效率很高。 'ElementTree'是一个纯Python实现。甚至不要尝试使用正则表达式,对于XML来说它非常困难。 – tdelaney

+0

另一种选择是使用XSLT。假设你想要的文字,但你也想打破'

...

'边界的段落。这可以用XSLT紧凑地表示(如果有点隐藏的话)。 – tdelaney

+0

谢谢@tdelaney。我要用lxml。完成后我会通知你。 – ssokhey

回答

1

尝试以下操作:

from bs4 import BeautifulSoup 
import requests 

# Assuming this is the url where the file is 
html = requests.get('http://www.lancaster.ac.uk/fass/projects/corpus/emille/MANUAL.htm').content 

bsObj = BeautifulSoup(html) 

textData = bsObj.findAll('p') 

for item in textData: 
    print item.get_text() 
+0

嗨,谢谢。这确实有帮助,但输出中缺少一些内容。我不知道为什么。我在做这个工作。 – ssokhey

+0

它正在工作。回复较晚,抱歉! – ssokhey

相关问题