Python读取文件并解析所需数据

2024-05-14 00:46:21 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我在看一个文件数据.txt格式如下。你知道吗

Last table change time   : 69 days, 0:17:19 ago
Number of table inserts  : 93
Number of table deletes  : 87
Number of table drops    : 0
Number of table age-outs : 0

Port       Neighbor Device ID             Neighbor Port ID           TTL
Et2/1      CN-Arista2                       Ethernet5/1                120
Et2/2      CN-Arista2                       Ethernet5/2                120
Et2/3      CN-Arista3                       Ethernet5/3                120
Et2/4      CN-Arista                       Ethernet5/4                120
Et64/1     CN-Spine2                      Ethernet64/1               120
Ma1        Arista01.Dmech.rack01             Ethernet1                  120

我需要把它放在下面

Et2/1, CN-Arista2, Ethernet5/1
Et2/2, CN-Arista2, Ethernet5/2
Et2/3, CN-Arista3, Ethernet5/3
Et2/4, CN-Arista, Ethernet5/4
Et64/1, CN-Spine2, Ethernet64/1
Ma1, Arista01.Dmech.rack01, Ethernet1 

Tags: ofidnumberporttablecnaristaneighbor
3条回答

我不确定你想做什么,但也许这会让你朝着正确的方向前进:

filename = 'myfile.txt'

with open(filename, 'r') as file:
    for line in file:
        print(*line.split(), sep=', ')
    file.close()

谢谢你跳跳虎3:)

input = """Port       Neighbor Device ID             Neighbor Port ID           TTL
Et2/1      CN-Arista2                       Ethernet5/1                120
Et2/2      CN-Arista2                       Ethernet5/2                120
Et2/3      CN-Arista3                       Ethernet5/3                120
Et2/4      CN-Arista                       Ethernet5/4                120
Et64/1     CN-Spine2                      Ethernet64/1               120
Ma1        Arista01.Dmech.rack01             Ethernet1                  120
"""


#create a test file
fn_in = "./testin.txt"
fn_out = "./testout.txt"

with open(fn_in, "w") as fo:
    fo.write(input)

with open(fn_in, "r") as fi, open(fn_out,"w") as fo:

    #drop first line
    for line in fi.readlines()[1:]:
        #split without argument treats consecutive spaces as 1 separator
        #drop last field
        fields = line.split()[:-1]
        fo.write(", ".join(fields)+"\n")

有效吗?你知道吗

$ cat testout.txt


Et2/1, CN-Arista2, Ethernet5/1
Et2/2, CN-Arista2, Ethernet5/2
Et2/3, CN-Arista3, Ethernet5/3
Et2/4, CN-Arista, Ethernet5/4
Et64/1, CN-Spine2, Ethernet64/1
Ma1, Arista01.Dmech.rack01, Ethernet1

试试这个:

fi = open('data.txt')
fo = open('data.csv')
for line in fi:
     L = line.split()
     S = ' '.join(L[5:8]).replace(',','') +', ' + ', '.join(L[14: : 6]) + '\n'
     fo.write(S)
fo.close()
fi.close()

相关问题 更多 >