Python,使用正则表达式消除尖括号内的行

Python,使用正则表达式消除尖括号内的行,python,regex,Python,Regex,我正在编写一个python脚本,为几个文本文件中的单词指定语法类别。在每个文本文件中,我都有尖括号内的文件头。在整个文本中,还有额外的行,带有时间戳、页码和抄写者提出的问题等信息。我想删除这些行。这就是文本文件的基本外观: <title Titipuru Supay> <speaker name> <sex female> <dialect Pastaza> <register narrative>

我正在编写一个python脚本,为几个文本文件中的单词指定语法类别。在每个文本文件中,我都有尖括号内的文件头。在整个文本中,还有额外的行,带有时间戳、页码和抄写者提出的问题等信息。我想删除这些行。这就是文本文件的基本外观:

<title      Titipuru Supay>
<speaker    name>
<sex        female>
<dialect    Pastaza>
<register   narrative>
<contributor    name>

chan; payguna serenkya man chiga; 
<ima?> 
payguna kirina man, chiga, mana 
shayachira; ninagunan shi tujsirani nira: 
illaparani nira shi illapay 
<173> 
pasasha, ima shi kasna nin, nisha,

陈;payguna serenkya man chiga;
payguna kirina人,chiga,mana
沙亚希拉;ninagunan shi tujsirani nira:
illaparani nira shi illapay
帕萨沙,伊玛·什·卡什纳·宁,尼沙,
即使每个文件中有相同数量的标题,其他材料也会有所不同,所以我不能只删除特定的行。所以我想我应该尝试一些简单的方法,比如re.sub语句,它删除了中间的所有内容,包括括号

with open(file, encoding='utf-8') as file_in:
        text = file_in.read()
        re.sub(r"<.*>", " ", text)
打开(文件,编码为utf-8')作为文件的
:
text=文件_in.read()
re.sub(r“,”文本)
我在pythex.org和regex101上试过,它在两个地方都能用测试字符串工作,但在我的脚本中不行(是的,我已经导入了re)。我还尝试了其他解决方案,如:
\

我只是没有正确地使用正则表达式,还是这里有更深层次的东西?

字符串是不可变的,这意味着它们不能修改,只能重新分配。
re.sub(…)
正在工作,但它正在返回一个新字符串。试试这个:

text = re.sub(r"<.*>", " ", text)
text=re.sub(r“”,text)
如果这仍然不起作用,请向我们提供有关您的问题的更多信息

字符串是不可变的,这意味着它们不能修改,只能重新分配。
re.sub(…)
正在工作,但它正在返回一个新字符串。试试这个:

text = re.sub(r"<.*>", " ", text)
text=re.sub(r“”,text)

如果这仍然不起作用,请向我们提供有关您的问题的更多信息

据我所知,您可能有多个
在同一行。在这种情况下,使用否定字符类解决方案更安全:

text = re.sub(r"<[^>]*>", " ", text)
text=re.sub(r“]*>”,“”,text)
当然,
text
变量应该更新,因为Python字符串是不可变的,正则表达式现在匹配
,然后匹配


据我所知,您可能在同一行中有多个
。在这种情况下,使用否定字符类解决方案更安全:

text = re.sub(r"<[^>]*>", " ", text)
text=re.sub(r“]*>”,“”,text)
当然,
text
变量应该更新,因为Python字符串是不可变的,正则表达式现在匹配
,然后匹配


您如何知道它不起作用?您是否将
re.sub()
的结果保存在某个地方它不能正常工作-生成一个新字符串。我在它下面添加了一个print(text)语句,在输出中我可以看到所有的材料仍然保留着try
text=re.sub(r“]*>,”,text)
。否则,请添加更多文本以进行测试。@WiktorStribiżew就是这样做的!一百万个谢谢你的节目你知道它不起作用吗?您是否将
re.sub()
的结果保存在某个地方它不能正常工作-生成一个新字符串。我在它下面添加了一个print(text)语句,在输出中我可以看到所有的材料仍然保留着try
text=re.sub(r“]*>,”,text)
。否则,请添加更多文本以进行测试。@WiktorStribiżew就是这样做的!这也是我写的解决方案。您需要用其他内容替换该行,因为re.sub将返回一个新字符串,而不是替换输入的字符串。哦,是的,我想我忘记了文本=,但我这样做了,而且它基本上起了作用,我仍然在这里和那里显示标题的片段,始终带有第一个括号:@AlexR.,你能提供一个不起作用的例子,以便我们测试它吗?上面给出的一个注释提供了一个有效的表达式:*>但是感谢@Brian指出了我的一个愚蠢错误,忘记了text=part。这也是我写的解决方案。您需要用其他内容替换该行,因为re.sub将返回一个新字符串,而不是替换输入的字符串。哦,是的,我想我忘记了文本=,但我这样做了,而且它基本上起了作用,我仍然在这里和那里显示标题的片段,始终带有第一个括号:@AlexR.,你能提供一个例子说明它不起作用,这样我们就可以测试它吗?上面给出的一条评论提供了一个有效的表达式:*>但是感谢@Brian指出了我的一个愚蠢错误,忘记了text=part。我确实有代表,但现在没有了,当我回到15岁时,我一定会回来投票支持你的答案。再次感谢。我确实有这个代表,但现在不行了,等我回到15岁时,我一定会回来投票支持你的答案。再次感谢。