什么是从pythonstring中删除空行的快速单行程?

我有一些pythonstring中包含无关的空行的代码。 我想删除string中的所有空行。 什么是最pythonic的方式来做到这一点?

注意:我不是在寻找一个通用代码重新格式化器,只是一个快速的一个或两个class轮。

谢谢!

  • 如何使用python-3.x中的字典格式化string?
  • 我如何修剪空白?
  • 删除“。”后的部分string
  • 首字母大写。 MySQL的
  • 在C#中命名的string格式
  • 如何将String 转换为ArrayList <String>
  • 如何在一行上连接多个C ++string?
  • 将符号转换为Elisp中的string
  • 7 Solutions collect form web for “什么是从pythonstring中删除空行的快速单行程?”

    怎么样:

    text = os.linesep.join([s for s in text.splitlines() if s]) 

    哪里的text是可能多余的string?

     "\n".join([s for s in code.split("\n") if s]) 

    EDIT2:

     text = "".join([s for s in code.splitlines(True) if s.strip("\r\n")]) 

    我认为这是我的最终版本。 即使在代码混合行结束的情况下,它也应该可以工作。 我不认为与空格的行应该被认为是空的,但如果是这样的话,那么简单的s.strip()将会替代。

     filter(None, code.splitlines()) filter(str.strip, code.splitlines()) 

    相当于

     [s for s in code.splitlines() if s] [s for s in code.splitlines() if s.strip()] 

    并可能对可读性有用

    在删除空间的新线和空行的教训

    “t”是文本的variables。 你会看到一个“s”variables,它是一个临时variables,只存在于主括号集的评估过程中(忘记了这些lil python的名字)

    首先让我们设置“t”variables,使它有新的行:

     >>> t='hi there here is\na big line\n\nof empty\nline\neven some with spaces\n \nlike that\n\n \nokay now what?\n' 

    请注意有另一种方法来设置使用三重引号variables

     somevar=""" asdfas asdf asdf asdf asdf """" 

    下面是我们在没有“打印”的情况下查看它的样子:

     >>> t 'hi there here is\na big line\n\nof empty\nline\neven some with spaces\n \nlike that\n\n \nokay now what?\n' 

    用实际换行符来查看,打印出来。

     >>> print t hi there here is a big line of empty line even some with spaces like that okay now what? 

    命令删除所有空白行(包括空格):

    所以有些线新线只是换行符,有些有空格,所以看起来像新线

    如果你想摆脱所有空白的行(如果他们只有换行符或空格)

     >>> print "".join([s for s in t.strip().splitlines(True) if s.strip()]) hi there here is a big line of empty line even some with spaces like that okay now what? 

    要么:

     >>> print "".join([s for s in t.strip().splitlines(True) if s.strip("\r\n").strip()]) hi there here is a big line of empty line even some with spaces like that okay now what? 

    注意:t.strip()。stripline(True)中的strip可以被删除,所以它只是t.splitlines(True),但是你的输出可以以一个额外的换行符结束(这样就可以删除最后的换行符)。 最后部分s.strip(“\ r \ n”)。strip()和s.strip()中的strip()实际上是删除换行符和换行符中的空格。

    命令删除所有空白行(但不是与空间):

    技术上用空格的行不应该被认为是空的,但是这一切都取决于用例和你想要达到的目的。

     >>> print "".join([s for s in t.strip().splitlines(True) if s.strip("\r\n")]) hi there here is a big line of empty line even some with spaces like that okay now what? 

    **关于那个MIDDLE地带**

    那里的那个中间带,连接到“t”variables,只是删除了最后一个换行符(正如前面的注释所述)。 这里是如何看起来像没有那条(在那里注意,最后一个换行符)

    用第一个例子(用空格去除换行符和换行符)

     >>> print "".join([s for s in t.strip().splitlines(True) if s.strip("\r\n").strip()]) hi there here is a big line of empty line even some with spaces like that okay now what? .without strip new line here (stackoverflow cant have me format it in). 

    用第二个例子(只去除换行符)

     >>> print "".join([s for s in t.strip().splitlines(True) if s.strip("\r\n")]) hi there here is a big line of empty line even some with spaces like that okay now what? .without strip new line here (stackoverflow cant have me format it in). 

    结束!

    这一个也会删除空格的行。

    re.replace(u'(?imu)^\s*\n', u'', code)

    现在完全不同了:

     Python 1.5.2 (#0, Apr 13 1999, 10:51:12) [MSC 32 bit (Intel)] on win32 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>> import string, re >>> tidy = lambda s: string.join(filter(string.strip, re.split(r'[\r\n]+', s)), '\n') >>> tidy('\r\n \n\ra\n\nb \r\rc\n\n') 'a\012 b \012c' 

    第2集:

    这一个不适用于1.5 🙁

    但它不仅处理通用换行符和空白行,它还删除尾随的空白(整理代码行恕我直言,好主意),并执行修复工作,如果最后有意义的行不终止。

     import re tidy = lambda c: re.sub( r'(^\s*[\r\n]+|^\s*\Z)|(\s*\Z|\s*[\r\n]+)', lambda m: '\n' if m.lastindex == 2 else '', c) 

    这是一个单行的解决scheme:

     print("".join([s for s in mystr.splitlines(True) if s.strip()]))