尝试在“空”换行符上使用python拆分而不是任何其他新行。我尝试了一些我发现的其他例子,但似乎都没有。
数据示例:
(*,224.0.0.0/4) RPF nbr: 96.34.35.36 Flags: C RPF P Up: 1w6d (*,224.0.0.0/24) Flags: D P Up: 1w6d (*,224.0.1.39) Flags: S P Up: 1w6d (96.34.246.55,224.0.1.39) RPF nbr: 96.34.35.36 Flags: RPF Up: 1w5d Incoming Interface List Bundle-Ether434 Flags: F A, Up: 1w5d Outgoing Interface List BVI100 Flags: F, Up: 1w5d TenGigE0/0/0/3 Flags: F, Up: 1w5d TenGigE0/0/1/1 Flags: F, Up: 1w5d TenGigE0/0/1/2 Flags: F, Up: 1w5d TenGigE0/0/1/3 Flags: F, Up: 1w5d TenGigE0/1/1/1 Flags: F, Up: 1w5d TenGigE0/1/1/2 Flags: F, Up: 1w5d TenGigE0/2/1/0 Flags: F, Up: 1w5d TenGigE0/2/1/1 Flags: F, Up: 1w5d TenGigE0/2/1/2 Flags: F, Up: 1w5d Bundle-Ether234 (0/3/CPU0) Flags: F, Up: 3d16h Bundle-Ether434 Flags: F A, Up: 1w5d
我希望拆分任何在线新线,只换新线。
示例代码如下:
myarray = []
myarray = output.split("\n")
for line in myarray:
print line
print "Next Line"
我确实已导入“re”库。
答案 0 :(得分:5)
当你考虑空行时,这很容易。它只是换行符,因此在空行上拆分将按顺序拆分两个换行符(一个来自前一行非空行,一行是'整行'空行。 / p>
myarray = output.split("\n\n")
for line in myarray:
print line
print "Next Line"
答案 1 :(得分:1)
空行只是两个新行。因此,您最简单的解决方案可能是检查两个新行(除非您预计会出现连续两行以上的空行)。
import os
myarray = [] #As DeepSpace notes, this is not necessary as split will return a list. No impact to later code, just more typing
myarray = output.split(os.linesep + os.linesep) ##use os.linesep to make this compatible on more systems
那就是我开始的地方
答案 2 :(得分:0)
在多个空白行应被视为一个空白行的情况下有效。
import re
def split_on_empty_lines(s):
# greedily match 2 or more new-lines
blank_line_regex = r"(?:\r?\n){2,}"
return re.split(blank_line_regex, s.strip())
正则表达式有点奇怪。
\n
,而且匹配\r\n
(对于
Windows)或\n
(对于Linux / Mac)。 ?:
的行为。例如:
re.split
返回
s = """
hello
world
this is
a test
"""
split_on_empty_lines(s)