Python 删除子字符串,直到行结束
我有一个字符串Python 删除子字符串,直到行结束,python,regex,string,Python,Regex,String,我有一个字符串a a="to be removed blah blah \r\nrow 2 blah blah\r\nrow 3 more blah blah \r\nto be removed more blah blah \r\nrow 5 final blah blah" 我想基本上做到以下几点 a=a.replace\u all(“待删除…”\r\n“,”) 因此,输出如下所示: “第2行诸如此类的废话\r\n再看3行诸如此类的废话\r\n再看5行最后诸如此类的废话” 但是,我只知道行
a
a="to be removed blah blah \r\nrow 2 blah blah\r\nrow 3 more blah blah \r\nto be removed more blah blah \r\nrow 5 final blah blah"
我想基本上做到以下几点
a=a.replace\u all(“待删除…”\r\n“,”)
因此,输出如下所示:
“第2行诸如此类的废话\r\n再看3行诸如此类的废话\r\n再看5行最后诸如此类的废话”
但是,我只知道行是如何开始的,而不知道其余的使用
re.sub
并放置一个重复的通配符*
,该通配符不包含?
的\r\n
:
>>> import re
>>> a = "to be removed blah blah \r\nrow 2 blah blah\r\nrow 3 more blah blah \r\nto be removed more blah blah \r\nrow 5 final blah blah"
>>> a = re.sub(r'to be removed.*?\r\n', '', a)
>>> a
'row 2 blah blah\r\nrow 3 more blah blah \r\nrow 5 final blah blah'
使用
re.sub
并放置一个通配符
,重复*
,该通配符不包含?
该\r\n
:
>>> import re
>>> a = "to be removed blah blah \r\nrow 2 blah blah\r\nrow 3 more blah blah \r\nto be removed more blah blah \r\nrow 5 final blah blah"
>>> a = re.sub(r'to be removed.*?\r\n', '', a)
>>> a
'row 2 blah blah\r\nrow 3 more blah blah \r\nrow 5 final blah blah'
不使用正则表达式的另一种方法:
>>> a = "\r\n".join([i for i in a.splitlines() if not 'to be removed' in i])
不使用正则表达式的另一种方法:
>>> a = "\r\n".join([i for i in a.splitlines() if not 'to be removed' in i])
另一种尝试可能是组合
搜索
和子
模块的re
功能-
>>> a = "to be removed blah blah \r\nrow 2 blah blah\r\nrow 3 more blah blah \r\nto be removed more blah blah \r\nrow 5 final blah blah"
>>> r = re.sub(re.search(r'to be removed blah blah[\s]+', a,re.I).group(), '', a)
>>> print r
另一种尝试可能是组合
搜索
和子
模块的re
功能-
>>> a = "to be removed blah blah \r\nrow 2 blah blah\r\nrow 3 more blah blah \r\nto be removed more blah blah \r\nrow 5 final blah blah"
>>> r = re.sub(re.search(r'to be removed blah blah[\s]+', a,re.I).group(), '', a)
>>> print r