1

次のようなデータがあります。行数はさまざまです。

? (192.168.30.4) at 00:10:60:0a:70:26 [ether]  on vlan20                        
? (192.168.30.1) at 70:ca:9b:99:6a:82 [ether]  on vlan20 
#etc similar format

これを解析して、次のようなものをテーブルに出力できるようにしたい:

#Protocol  Address          Age (min)   Hardware Addr   Type   Interface          
#Internet  192.168.30.4             -   0010.600a.7026  ARPA   Vlan20              
#Internet  192.168.30.1             -   70ca.9b99.6a82  ARPA   Vlan20

データを行ごとに 2 つのリストに分割します

 parse = proc_stdout.split('\n')

これにより、2 つの要素を持つリストが得られました。

['? (192.168.30.4) at 00:10:60:0a:70:26 [ether]  on vlan20', '? (192.168.30.1) a
t 70:ca:9b:99:6a:82 [ether]  on vlan20', '']

ここで、リスト内の各スペースで新しいリストが作成されるように、データをさらに分割したいと考えています。これにより、上記の出力の各行のリストのリストが生成されます。次に、リストの各リストを検索して、必要なデータを抽出して印刷できます。しかし、リストを分割することはできませんか? これを行う最善の方法は何ですか?

4

2 に答える 2

2

この目的のために、リスト内包表記またはジェネレーター ステートメントを使用できます。

parse = proc_stdout.strip('\n').split('\n')
parsed_list = [line.split() for line in parse]

または、結果を他の構造に処理する場合はジェネレーター

parse = proc_stdout.strip('\n').split('\n')
parsed_list = (line.split() for line in parse)
于 2013-06-13T09:50:19.033 に答える