繁体   English   中英

如何使用正则表达式从python中删除字符串中的标签? (不是HTML)

[英]How to remove tags from a string in python using regular expressions? (NOT in HTML)

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

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

删除两端的整个标记的最有效方法是什么,只留下“标题”? 我只看到过使用HTML标签做到这一点的方法,而这在python中对我没用。 我正在使用这个特别适用于GIS程序ArcMap。 它有自己的布局元素标签,我只需删除两个特定标题文本元素的标签。 我相信正则表达式应该可以正常使用,但我对任何其他建议持开放态度。

这应该工作:

import re
re.sub('<[^>]*>', '', mystring)

对于每个人说正则表达式不是正确的工具:

问题的背景是关于常规/无上下文语言的所有异议都是无效的。 他的语言基本上由三个实体组成: a = <b = >c = [^><]+ 他想删除任何acb 这直接将他的问题描述为涉及无上下文语法的问题,并且将其定性为常规语法并不困难。

我知道每个人都喜欢“你不能用正则表达式解析HTML”的答案,但是OP不想解析它,他只是想进行简单的转换。

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

您可以使用BeautifulSoup get_text()功能。

from bs4 import BeautifulSoup

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

print(soup.get_text())

搜索此正则表达式并将其替换为空字符串应该可行。

/<[A-Za-z\/][^>]*>/

示例(来自python shell):

>>> import re
>>> my_string = '<FNT name="Century Schoolbook" size="22">Title</FNT>'
>>> print re.sub('<[A-Za-z\/][^>]*>', '', my_string)
Title

如果它仅用于解析和检索值,您可以查看BeautifulStoneSoup。

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

import xml.etree.ElementTree as ET
mystring = """<FNT name="Century Schoolbook" size="22">Title</FNT>"""
element = ET.XML(mystring)
print element.text  # 'Title'

如果来源不是很好,BeautifulSoup是一个很好的建议。 正如几张海报所指出的,使用正则表达式来解析标签并不是一个好主意。

使用XML解析器,例如ElementTree。 正则表达式不适合这项工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM