Как экспортировать особый список в Excell или CSV - PullRequest
2 голосов
/ 19 апреля 2020

Эй, у меня есть список, который выглядит следующим образом:

['192.168.0.1  switch1 ff:ff:ff:ff:ff:ff  657 dynamic port:42','10.60.37.2 switch1 ff:ff:ff:ff:ff:ff  657 dynamic port:41','192.168.0.240  switch1 ff:ff:ff:ff:ff:ff  657 dynamic port:40']

, когда я экспортирую, чтобы превзойти каждый блок в другой строке, что хорошо, но все в том же столбце, я хотел иметь адрес в столбце 1 столбец переключателя 2 et c

                                 excel colunm 1
excel row1: 192.168.0.1  switch1 ff:ff:ff:ff:ff:ff  657 dynamic port:42
excel row2: 10.60.37.2   switch1 ff:ff:ff:ff:ff:ff  657 dynamic port:41
excel row3 :192.168.0.240  switch1 ff:ff:ff:ff:ff:ff  657 dynamic port:40

, поэтому я хотел вот так

          exlcol1        exlcol2       exl.col3     exl.col4 exl.col5 exl.col6 
exlrow1: 192.168.0.1     switch1   ff:ff:ff:ff:ff:ff   657   dynamic    port:42
exlrow2: 10.60.37.2      switch1   ff:ff:ff:ff:ff:ff   657   dynamic   port:41
exlrow3 :192.168.0.240   switch1   ff:ff:ff:ff:ff:ff   657   dynamic   port:40

Я попытался экспортировать его в CSV вместо этого, но он говорит, что wtr.writerows ( row) должен быть похож на byte.object, затем я попытался изменить свой список на строку, чтобы изменить его на byte.object, но там написано, что мои wtr.writerows (row) должны быть целыми.

вот код Раньше я экспортировал в CSV

import csv
with open('test.csv', 'wb') as f:
     wtr = csv.writer(f, delimiter= ',')
     for row in data11parts1:
        wtr.writerows(row)

with open('test.csv', 'r') as f:
    for line in f:
         print (line)

. Я предпочел экспортировать его в Excell, но я подумал, что это поможет вам лучше объяснить мои проблемы и тип данных, которые у меня есть. просто сказать вам, что я получил свои data11parts1 из этого приложения:

for element in data2:
    elementstring=''.join(element)
    for element in res1:
        elementstring5=''.join(element)
        if elementstring in elementstring5:
             with open(Sw1, 'r') as f3:
              for line5 in f3:
               if elementstring in line5:
                  print('managemnet-tool' + ' - ' + Sw1.rsplit('.txt',1)[0] + ' - ' + elementstring5.rsplit('-', 1)[0] + ' - ' + line5.rsplit('\n', 1)[0])
                  data11.append(elementstring5.rsplit('-',1)[0] + '  ' + Sw1.rsplit('.txt',1)[0] + ' ' + line5.rsplit('\n', 1)[0])
                  data13.append(str(line5.rsplit('\n', 1)[0]))
                  exit

1 Ответ

1 голос
/ 20 апреля 2020

Жалуется, потому что вы открыли файл для бинарной записи. Запись в CSV - это просто, разбейте свои внутренние строки на списки (разделенные пробелами) и напишите их:

data = ['192.168.0.1  switch1 ff:ff:ff:ff:ff:ff  657 dynamic port:42',
        '10.60.37.2 switch1 ff:ff:ff:ff:ff:ff  657 dynamic port:41',
        '192.168.0.240  switch1 ff:ff:ff:ff:ff:ff  657 dynamic port:40']

# split the strings into their columns
dp = [d.split() for d in data]

import csv
with open("data.txt","w", newline="") as f:    # w not wb and supply newline
    writer = csv.writer(f)

    # write em all
    writer.writerows(dp)

with open("data.txt") as f:
    print(f.read())

Содержимое файла:

192.168.0.1,switch1,ff:ff:ff:ff:ff:ff,657,dynamic,port:42
10.60.37.2,switch1,ff:ff:ff:ff:ff:ff,657,dynamic,port:41
192.168.0.240,switch1,ff:ff:ff:ff:ff:ff,657,dynamic,port:40

См.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...