如何在Python中删除带或不带空格的空行

时间:2010-09-14 18:35:12

标签: python string

我有一个大字符串,我用换行符分割。 如何删除所有空行(仅限空格)?

伪代码:

for stuff in largestring:
   remove stuff that is blank

13 个答案:

答案 0 :(得分:51)

尝试列表理解和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']

答案 1 :(得分:41)

使用正则表达式:

if re.match(r'^\s*$', line):
    # line is empty (has only the following: \t\n\r and whitespace)

使用正则表达式+ filter()

filtered = filter(lambda x: not re.match(r'^\s*$', x), original)

codepad

答案 2 :(得分:14)

我也尝试过regexp和list解决方案,列出一个更快

这是我的解决方案(通过以前的答案):

text = "\n".join([ll.rstrip() for ll in original_text.splitlines() if ll.strip()])

答案 3 :(得分:10)

编辑:哇,我想省略显而易见的事情是不行的。

lines = bigstring.split()
lines = [line for line in lines if line.strip()]

答案 4 :(得分:4)

如果你不愿意尝试正则表达式(你应该),你可以使用它:

s.replace('\n\n','\n')

重复几次以确保没有空白行。或链接命令:

s.replace('\n\n','\n').replace('\n\n','\n')

答案 5 :(得分:1)

没有建议多线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

>>> 

答案 6 :(得分:1)

我的原始文字是: 随着剧情的继续,艾米·庞德(Amy Pond)被绑架,医生正在集结一支军队来营救她。但是,当他和罗里(Rory)穿越银河系,要求长期拖欠债务并郑重地兑现诺言时,他的敌人正在精心掩盖住陷阱。

宋河在她位于风暴笼子里的牢房中不幸地承认,时机终于到了-今天将是“恶魔之战”和“博士”最黑暗的时刻。双方都会作出牺牲,宋河必须最终揭露她最严密的秘密。

我已删除空行,并通过此解决方案将所有行连为一行。

match_p = re.sub(r'\s{2}', '', my_txt) # my_txt is text above

答案 7 :(得分:0)

komodo edit remove blank lines

在科莫多编辑中按Ctrl + H星标记(视为正则表达式),点击上方链接查看快照。

答案 8 :(得分:0)

与@NullUserException相同,这就是我写它的方式:

removedWhitespce = re.sub(r'^\s*$', '', line)

答案 9 :(得分:0)

您可以简单地使用rstrip:

    for stuff in largestring:
        print(stuff.rstrip("\n")

答案 10 :(得分:0)

到目前为止,我找到的最简单的解决方案是-

for stuff in largestring:
    if stuff.strip():
        print(stuff)

答案 11 :(得分:0)

使用正向后视正则表达式:

re.sub(r'(?<=\n)\s+', '', s, re.MULTILINE)

当您输入时:

foo
<tab> <tab>

bar

输出将是:

foo
bar

答案 12 :(得分:-2)

while True:
    try:
        all_lines.remove('')
    except ValueError:
        break