我有一个大字符串,我用换行符分割.如何删除所有空行(仅限空格)?
伪代码:
for stuff in largestring:
remove stuff that is blank
Run Code Online (Sandbox Code Playgroud)
gim*_*mel 53
尝试列表理解和string.strip()
:
>>> mystr = "L1\nL2\n\nL3\nL4\n \n\nL5"
>>> mystr.split('\n')
['L1', 'L2', '', 'L3', 'L4', ' ', '', 'L5']
>>> [line for line in mystr.split('\n') if line.strip() != '']
['L1', 'L2', 'L3', 'L4', 'L5']
Run Code Online (Sandbox Code Playgroud)
Nul*_*ion 46
使用正则表达式:
if re.match(r'^\s*$', line):
# line is empty (has only the following: \t\n\r and whitespace)
Run Code Online (Sandbox Code Playgroud)
使用正则表达式+ filter()
:
filtered = filter(lambda x: not re.match(r'^\s*$', x), original)
Run Code Online (Sandbox Code Playgroud)
如在键盘上看到的那样.
Reg*_*isz 16
我也试过regexp和列表解决方案,列表一个更快.
这是我的解决方案(通过以前的答案):
text = "\n".join([ll.rstrip() for ll in original_text.splitlines() if ll.strip()])
Run Code Online (Sandbox Code Playgroud)
nmi*_*els 10
编辑:哇,我想省略显而易见的不行.
lines = bigstring.split()
lines = [line for line in lines if line.strip()]
Run Code Online (Sandbox Code Playgroud)
小智 9
令人惊讶的是,没有建议使用多行 re.sub (哦,因为你已经分割了你的字符串......但为什么?):
>>> import re
>>> a = "Foo\n \nBar\nBaz\n\n Garply\n \n"
>>> print a
Foo
Bar
Baz
Garply
>>> print(re.sub(r'\n\s*\n','\n',a,re.MULTILINE))
Foo
Bar
Baz
Garply
>>>
Run Code Online (Sandbox Code Playgroud)
如果你不愿意尝试正则表达式(你应该),你可以使用这个:
s.replace('\n\n','\n')
Run Code Online (Sandbox Code Playgroud)
重复几次以确保没有空白行.或者链接命令:
s.replace('\n\n','\n').replace('\n\n','\n')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
124865 次 |
最近记录: |