Python 删除文档中的标记

Python 删除文档中的标记,python,regex,Python,Regex,我需要找到所有的标签在.txt格式的SEC文件,并从文件中删除 作为Python的初学者,我使用了以下代码来查找标记,但它返回None,None。。。我不知道如何移除所有标签。我的问题是如何找到所有标记并删除所有标记,以便文档包含除标记以外的所有内容 import re tags = [re.search(r'<.+>', line) for line in mylist] #mylist is the filename opened by open(filename, 'rU').

我需要找到所有的标签在.txt格式的SEC文件,并从文件中删除

作为Python的初学者,我使用了以下代码来查找标记,但它返回None,None。。。我不知道如何移除所有标签。我的问题是如何找到所有标记并删除所有标记,以便文档包含除标记以外的所有内容

import re
tags = [re.search(r'<.+>', line) for line in mylist]
#mylist is the filename opened by open(filename, 'rU').readlines()
谢谢你抽出时间

re.sub(r'<.*?>', '', line)

使用和表达

re.sub(r'<[^>]+>', '', open(filename, 'r').read())
对于不包含方括号标记的每一行,您当前的代码都会得到一个None


您可能想使用[^>]来确保它只匹配到第一个>

好吧,对于初学者来说,您需要一个不同的正则表达式。您拥有的字符串将选择第一个字符串之间的所有内容,因此字符串:

I can type in <b>BOLD</b>
匹配任意长度的字符串?意味着它将匹配尽可能短的字符串。我们以前增加的懒惰

(<?=...)
这是一个前瞻。这跟后面看一样。然后用一点芬德尔:

re.findall(r'(?<=>).+?(?=<)', line);
将匹配附加到标记上的任意数量的空格,然后可以用一个空格替换,从而减少因标记过于小心而导致的令人不安的双空格和三空格。作为一种奖励

(?: ... ) 
被称为非捕获组,它不会在结果中为您提供较小的子匹配。在这种情况下,对于你的目的来说,这并不是真正必要的,但是小组总是很有用的,可以考虑,而且只捕获你需要的小组是很好的做法。就像我做的那样,在末尾加上一个+将捕获尽可能多的相邻标签,将它们消除到单个空间中。因此,如果文件

This is <b> <i> overemphasized </b> </i>!
而不是

This is   overemphasized  !

我对正则表达式知之甚少,但是re.MULTILINE的意义何在?没有任何^或$标记。你的意思是re.DOTALL,允许标记中有换行符吗?
\s*
(?: ... ) 
This is <b> <i> overemphasized </b> </i>!
This is overemphasized !
This is   overemphasized  !