如何使用Python从文本文件中剥离SGML标记?

如何使用Python从文本文件中剥离SGML标记?,python,regex,unicode,beautifulsoup,sgml,Python,Regex,Unicode,Beautifulsoup,Sgml,我最近遇到了一些麻烦。我已经从中获得了SGML格式的语料库。这是本语料库的文档: 我只想提取文件中的文本。文档中语料库的编码和标记信息为: 文本编码为双字节Unicode文本。有关Unicode的详细信息。 文本在SGML中使用1级CES兼容标记进行标记。每个文件还包括一个完整的标题,用于指定文本的出处 我很难脱掉这些标签。我尝试了“正则表达式”和“靓汤”,但都不起作用。这是示例文本文件。我想保留的语言是旁遮普语 尝试以下操作: from bs4 import BeautifulSoup im

我最近遇到了一些麻烦。我已经从中获得了SGML格式的语料库。这是本语料库的文档:

我只想提取文件中的文本。文档中语料库的编码和标记信息为:

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

我很难脱掉这些标签。我尝试了“正则表达式”和“靓汤”,但都不起作用。这是示例文本文件。我想保留的语言是旁遮普语

尝试以下操作:

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()
请尝试以下操作:

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()
或 你可以使用简单的正则表达式;如果数据是包含以<开头并以>结尾的标记的字符串,则这些标记之间的所有内容都将被丢弃。您可以将多个空格限制为一个空格,并删除数据

data = re.sub(r'<.*?>', '', data)
data = re.sub(r'\s+', ' ', data)
data = data.strip()
data=re.sub(r'','',数据)
data=re.sub(r'\s+','',数据)
data=data.strip()
或 你可以使用简单的正则表达式;如果数据是包含以<开头并以>结尾的标记的字符串,则这些标记之间的所有内容都将被丢弃。您可以将多个空格限制为一个空格,并删除数据

data = re.sub(r'<.*?>', '', data)
data = re.sub(r'\s+', ' ', data)
data = data.strip()
data=re.sub(r'','',数据)
data=re.sub(r'\s+','',数据)
data=data.strip()

这是xml,您可以使用多个xml解析器。在python中,我最喜欢
lxml
——它是
libxml
库的前端,效率很高
ElementTree
是一个纯python实现。甚至不要尝试使用正则表达式来实现这一点,这对于xml来说非常困难。另一个选择是使用XSLT。假设您想要文本,但也希望打断
边界上的段落。这可以用XSLT简洁地表示(如果有点神秘的话)。我要用lxml。完成后我会通知您。这是xml,您可以使用多个xml解析器。在python中,我最喜欢
lxml
——它是
libxml
库的前端,效率很高
ElementTree
是一个纯python实现。甚至不要尝试使用正则表达式来实现这一点,这对于xml来说非常困难。另一个选择是使用XSLT。假设您想要文本,但也希望打断
边界上的段落。这可以用XSLT简洁地表示(如果有点神秘的话)。我要用lxml。完成后我会通知你的。嗨,谢谢。这确实很有帮助,但是输出中缺少了一些东西。我不知道为什么。我正在做。嗨,谢谢。这确实很有帮助,但是输出中缺少了一些东西。我不知道为什么。我正在努力。