現在、re.split("\n([^\s])", data)
以下に示すように簡単に必要なものをほぼ取得できますが、問題は、結果のリストに、リスト内の独自のアイテムとして単一の非空白文字の一致が含まれることです。スクリプトの下の出力例。「VLAN」の「V」が独自の項目として取り込まれていることに注意してください。
これを行うためのより良い方法があるかどうかも疑問に思っています。おそらく、表形式のデータを辞書などに変換することを処理するライブラリを含めることができます。
#!/usr/bin/python
import re
import sys
data = """
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/2, Fa0/3, Fa0/4, Fa0/5, Fa0/6, Fa0/7
Fa0/8, Fa0/9, Fa0/10, Fa0/11, Fa0/12
Fa0/13, Fa0/14, Fa0/15, Fa0/16, Fa0/17
Fa0/18, Fa0/19, Fa0/20, Fa0/21, Fa0/22
Fa0/23, Fa0/24, Gi0/2
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
"""
lines = re.split("\n([^\s])", data)
print lines
出力:
['', 'V', 'LAN Name Status Ports', '-', '--- --------------------------- ----- --------- -------------------------------', '1' , ' デフォルト アクティブ Fa0/2、Fa0/3、Fa0/4、Fa0/5、Fa0/6、Fa0/7\n
Fa0/8、Fa0/9、Fa0/10、Fa0/11、Fa0/12\n
Fa0/13、Fa0/14、Fa0/15、Fa0/16、Fa0/17\n
Fa0/18、Fa0/19、Fa0/20、Fa0/21、Fa0/22\n
Fa0/23、Fa0/24、 Gi0/2', '1', '002 fddi-default
act/unsup', '1', '003 token-ring-default act/unsup', '1', '004 fddinet-default act/unsup', ' 1', '005 trnet-default act/unsup\n']
ありがとう!
編集: (nmは機能しません、申し訳ありません)が、この全体はまだかなりハッキリしているので、別の提案を聞きたいです。lines = re.findall(".*[^\n\W]*", data)
おそらくより良いアプローチのようです