如何使用正则表达式从python中的字符串中删除标记?(非HTML格式)

如何使用正则表达式从python中的字符串中删除标记?(非HTML格式),python,strip,arcmap,Python,Strip,Arcmap,我需要从python中的字符串中删除标记 <FNT name="Century Schoolbook" size="22">Title</FNT> 标题 删除两端的整个标签,只留下“标题”的最有效方法是什么?我只见过使用HTML标记实现这一点的方法,而这在python中并不适用。我特别为ArcMap,一个GIS程序使用这个。它的布局元素有自己的标记,我只需要删除两个特定标题文本元素的标记。我相信正则表达式可以很好地解决这个问题,但我愿意接受任何其他建议。如果它只是用于

我需要从python中的字符串中删除标记

<FNT name="Century Schoolbook" size="22">Title</FNT>
标题

删除两端的整个标签,只留下“标题”的最有效方法是什么?我只见过使用HTML标记实现这一点的方法,而这在python中并不适用。我特别为ArcMap,一个GIS程序使用这个。它的布局元素有自己的标记,我只需要删除两个特定标题文本元素的标记。我相信正则表达式可以很好地解决这个问题,但我愿意接受任何其他建议。

如果它只是用于解析和检索值,您可以看看BeautifulsToneSoop。

这应该可以:

import re
re.sub('<[^>]*>', '', mystring)
重新导入
re.sub(']*>','',mystring)
对所有认为正则表达式不是工作的正确工具的人说:


问题的背景是,所有关于常规/上下文无关语言的反对意见都是无效的。他的语言基本上由三个实体组成:
a=
,和
c=[^>搜索这个正则表达式并用空字符串替换它应该是可行的

/<[A-Za-z\/][^>]*>/
/]*>/
示例(来自python shell):

>>重新导入
>>>我的字符串='Title'
>>>打印re.sub(']*>','',我的字符串)
标题

如果源文本是格式良好的XML,则可以使用stdlib模块:

将xml.etree.ElementTree作为ET导入
mystring=“”标题“”
element=ET.XML(mystring)
打印element.text#“Title”

如果消息来源不完整,那么BeautifulSoup是一个很好的建议。正如一些海报所指出的,使用正则表达式解析标记不是一个好主意。

使用XML解析器,如ElementTree。正则表达式不是此作业的合适工具。

请避免使用正则表达式。尽管正则表达式可以处理简单的字符串,但如果处理复杂的字符串,将来会遇到问题

您可以使用BeautifulSoup
get\u text()
功能

from bs4 import BeautifulSoup

text = '<FNT name="Century Schoolbook" size="22">Title</FNT>'
soup = BeautifulSoup(text)

print(soup.get_text())
从bs4导入美化组
text='Title'
soup=BeautifulSoup(文本)
打印(soup.get_text())

您希望在完成时将标题设置为标题,还是将标题设置为标题或标题,从你的问题中不确定你在追求什么?那么这个字符串在处理后应该是什么样子呢?我不完全清楚你想做什么。对不起。处理后的字符串应为“Title”。作为html的同级,xml不比html更规则,也不比html更无上下文限制。我不确定您的情况的全部范围,但快速看一眼,正则表达式似乎仍然是这项工作的错误工具。这不起作用。它返回原始字符串。谢谢。对不起,我忘了最重要的
*
字符。再试一次?谢谢,这正是我需要的。那也没用。你能给我一个例子,你将如何使用这个搜索和替换?我尝试了,它返回了原始字符串。添加了一个示例。您是否忘记了导入re
?除非输入不能保证是格式良好的XML,在这种情况下,正则表达式可以说是唯一合理的作业工具。我还敢打赌,正则表达式的执行速度将明显快于将字符串作为XML文档处理。如果输入不是格式良好的XML,那么实现完整的解析器将是正确的方法。语法足够复杂,正则表达式是不够的。如果FNT在标题的中间包含另一个标签,那么只打印到内部标签的部分。
import xml.etree.ElementTree as ET
mystring = """<FNT name="Century Schoolbook" size="22">Title</FNT>"""
element = ET.XML(mystring)
print element.text  # 'Title'
from bs4 import BeautifulSoup

text = '<FNT name="Century Schoolbook" size="22">Title</FNT>'
soup = BeautifulSoup(text)

print(soup.get_text())