当文本在python中有太多新行时清理(Re.sub)

时间:2015-11-21 01:42:17

标签: python regex text

我有一个我想要清理的文字。问题是新线太多了。当我使用text=open(file, 'r')text=text.read()打开文本时,我看到太多很难清理的新行。我想删除以下全文。

    How
Can I Help?
     Keep 
in Touch
     Working 
for You
     Briefing 
Room
 Meeting 
You
     F.A.Q.

我使用re.sub删除它们。因为有太多新行我需要11行re.sub命令。更糟糕的是,HowWorkingYouBriefing过于笼统,因此即使我不想删除它们,也可以将其从体内移除。我可以使用re.sub命令,如

remove1 = 'How'
remove2 = 'Can I Help'
remove3 = 'in Touch'
remove4 = 'Working'
remove5 = 'Briefing'
remove6 = 'Room'
remove7 = 'Meeting'
remove8 = 'You'
remove9 = 'F.A.Q'

text = re.sub(quant1, '', text)
text = re.sub(quant2,'', text)
text = re.sub(quant3, '', text)
text = re.sub(quant4, '', text)
text = re.sub(quant5, '', text)
text = re.sub(quant6, '', text)
text = re.sub(quant7, '', text)
text = re.sub(quant8, '', text)
text = re.sub(quant9, '', text)

有没有更好的方法来清理它?我不想一行一行地做。我想一次删除两行How Can I Help?。我不想包含像How这样过于笼统的词语。

如果我使用text.readlines(),结果如下所示。

'\tHow\r\n', 'Can I Help?\r\n', ' \t Keep \r\n', 'in Touch\r\n', ' \t Working \r\n',
 'for You\r\n', ' \t Briefing \r\n', 'Room\r\n', ' \t Meeting \r\n', 'You\r\n', ' \t F.A.Q.\r\n'

1 个答案:

答案 0 :(得分:1)

您可以使用文档中的|

  

'|'

     

A | B,其中A和B可以是任意RE,创建一个与A或B匹配的正则表达式。

     

可以通过' |'分隔任意数量的RE。通过这种方式。这也可以在组内使用(见下文)。

     

扫描目标字符串时,RE由' |'分隔。从左到右尝试。当一个模式完全匹配时,接受该分支。

     

这意味着一旦A匹配,B将不会被进一步测试,即使它会产生更长的整体匹配。换句话说,' |'操作员从不贪心。

     

要匹配文字'|',请使用\|,或将其括在字符类中,如[|]中所示。

正如文档所说,|匹配foo|barfoo,我们只需使用bar获取'|'.join(['foo', 'bar'])

所以你可以试试:

text = re.sub('|'.join([remove1, remove2, remove3, remove4, remove5, remove6
, remove7, remove8, remove9]), '', text)