Python:在Python中查找并删除以特定子字符串开头和结尾的字符串

时间:2019-01-28 08:06:53

标签: python

我有一个字符串,并且有许多我要删除的子字符串。

每个子字符串以ApPle开头,以THE BEST PIE — STRAWBERRY结尾。

我尝试了this post上的建议,但没有用。

输入

  

Cannoli(意大利语的发音:[kanˈnɔːli];西西里语:插管)   Italian ApPle Sep 12 THE BEST PIE —
  草莓糕点   起源于西西里岛,今天是西西里人的主食   美食1 [2]以及意大利裔美国人美食。   煎饼卷组成   油炸糕点面团的管状外壳,里面充满了甜甜的奶油   通常灌装ApPle 8月4日最佳派—草莓   凝乳。它们的大小从“ cannulicchi”到不超过   手指,通常位于拳头以南的拳头大小比例   西西里岛的巴勒莫,位于Piana degli Albanesi。[2]

import re
array = []

#open the file and delete new lines
with open('canoli.txt', 'r') as myfile:
    file = myfile.readlines()
    array = [s.rstrip('\n') for s in file]
    text = ' '.join(array)

attempt1 = re.sub(r'/ApPle+THE.BEST.PIE.-.STRAWBERRY/','',text)
attempt2 = re.sub(r'/ApPle:.*?:THE.BEST.PIE.-.STRAWBERRY/','',text)
print(attempt1)
print(attempt2)

所需的输出

  

Cannoli(意大利语的发音:[kanˈnɔːli];西西里语:插管)   意大利糕点   起源于西西里岛,今天是西西里人的主食   Cuisine1 [2]以及意大利美式美食。煎饼卷组成   油炸糕点面团的管状外壳,里面充满了甜甜的奶油   填充物通常包含   凝乳。它们的大小从“ cannulicchi”到不超过   手指,通常位于拳头以南的拳头大小比例   西西里岛的巴勒莫,位于Piana degli Albanesi。[2]

1 个答案:

答案 0 :(得分:1)

我认为您的正则表达式应为:ApPle.*?THE\sBEST\sPIE\s—\sSTRAWBERRY

,您需要添加regex选项DOTALL才能正确处理换行符,请尝试以下操作:

re.sub(r'ApPle.*?THE\sBEST\sPIE\s—\sSTRAWBERRY','',text, flags=re.DOTALL)