繁体   English   中英

删除子串直到行尾

[英]remove substring until end of the line

我有一个字符串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_all("to be removed...\\r\\n" ,"")

这样输出看起来像这样:

"row 2 blah blah\\r\\nrow 3 more blah blah\\r\\nrow5 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])

另一个尝试可能是re模块的searchsub功能的组合-

>>>  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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM