【问题标题】:Python: Find and remove a string starting and ending with a specific substring in pythonPython:在python中查找并删除以特定子字符串开头和结尾的字符串
【发布时间】:2019-01-28 08:06:53
【问题描述】:

我有一个字符串,它有许多我想删除的子字符串。

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

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

输入

Cannoli(意大利语发音:[kanˈnɔːli];西西里语:cannula)是 意大利苹果 9 月 12 日最好的馅饼 —
草莓糕点 起源于西西里岛,今天是西西里岛的主食 美食1[2] 以及意大利-美国美食。 Cannoli 包括 油炸糕点面团的管状外壳,里面充满了甜美的奶油 通常填充苹果 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];西西里语:cannula)是 意大利糕点 起源于西西里岛,今天是西西里岛的主食 美食1[2] 以及意大利-美国美食。 Cannoli 包括 油炸糕点面团的管状外壳,里面充满了甜美的奶油 填充物通常含有 凝乳。它们的大小从“cannulicchi”不等,不大于 手指,通常在南部发现的拳头大小的比例 西西里岛巴勒莫,在 Piana degli Albanesi。[2]

【问题讨论】:

  • 问题是,. 不计算换行符。请参阅@Keatine 的答案以获得正确的解决方案。

标签: python


【解决方案1】:

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

你需要添加正则表达式选项 DOTALL 来正确处理换行符,试试这个:

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

【讨论】:

  • 短语是否以 ∑ 开头和结尾。我试过text = re.sub(r'∑.*?∑','',text)
  • 我这样做了,但它不起作用。 text = text.replace('∑', 'DELETEDELETE') text = re.sub(r'(DELETEDELETE(.*?DELETEDELETE))','',text) 当我使用 regextester.com/94730 测试时,该格式有效
  • @Sebastian 一定要注意标志
  • 不确定标志是什么意思。
  • @Sebastian 看看我的代码,再看看你发的,我的有flags=re.DOTALL
猜你喜欢
  • 2015-11-08
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多