将文本表结构转换为列表

Lei*_*vir -1 python

有人可以告诉我如何转换如下表格:

    Device      Type       Model          Description      Vendor
   --------------------------------------------------------------
    Device1    Network1     Model2       Network Device1     bla bla
    Device2    Network2     Model2       Network Device2     bla bla
Run Code Online (Sandbox Code Playgroud)

如下所示:

Device = [Device1, Device2]
Type = [Network1, Network1]
Model = [Model2, Model2]
Description = [Network Device1 , Network Device2]
Vendor = [bla bla, bla bla]
Run Code Online (Sandbox Code Playgroud)

我尝试使用:

networkdata = open("./bin/data.txt",'r').read()
for row in networkdata:
    row = networkdata.rstrip('\n').split(" ")
    networkdataTable= [r.strip() for r in row if r != '']
Run Code Online (Sandbox Code Playgroud)

但没有运气,有人可以帮我吗?

kay*_*ya3 5

假设列由多个空格分隔,并且没有“空”单元格,您可以这样做:

import re

with open("./bin/data.txt") as f:
    rows = map(str.strip, f)
    networkdata_table = [re.split(r'\s\s+', row) for row in rows if row][2:]
    # slice [2:] removes first two lines, which are the table header

Device, Type, Model, Description, Vendor = zip(*networkdata_table)
Run Code Online (Sandbox Code Playgroud)

两个重要的部分是re.split(r'\s\s+', ...)在出现两个或多个空白字符时拆分字符串zip(*...),并将嵌套列表的“行”转换为“列”。

请注意,您通常应该使用with块来打开文件,没有必要指定'r'打开文件的模式,因为这是默认设置,您可以f直接迭代文件句柄对象以获得一行时间。