我有一个我想要清理的文字。问题是新线太多了。当我使用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
命令。更糟糕的是,How
,Working
,You
或Briefing
过于笼统,因此即使我不想删除它们,也可以将其从体内移除。我可以使用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'
答案 0 :(得分:1)
您可以使用文档中的|
:
'|'
A | B,其中A和B可以是任意RE,创建一个与A或B匹配的正则表达式。
可以通过' |'分隔任意数量的RE。通过这种方式。这也可以在组内使用(见下文)。
扫描目标字符串时,RE由' |'分隔。从左到右尝试。当一个模式完全匹配时,接受该分支。
这意味着一旦A匹配,B将不会被进一步测试,即使它会产生更长的整体匹配。换句话说,' |'操作员从不贪心。
要匹配文字
'|'
,请使用\|
,或将其括在字符类中,如[|]
中所示。
正如文档所说,|
匹配foo|bar
和foo
,我们只需使用bar
获取'|'.join(['foo', 'bar'])
。
所以你可以试试:
text = re.sub('|'.join([remove1, remove2, remove3, remove4, remove5, remove6
, remove7, remove8, remove9]), '', text)