有人可以告诉我如何转换如下表格:
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)
但没有运气,有人可以帮我吗?
假设列由多个空格分隔,并且没有“空”单元格,您可以这样做:
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
直接迭代文件句柄对象以获得一行时间。