Форматирование строки данных в Excel - PullRequest
0 голосов
/ 16 марта 2020

Я хочу записать данные, которые я получаю через последовательный порт, в файл CSV, чтобы потом можно было обрабатывать их в Excel. Извлечение данных работает, но при записи их в файл CSV вывод не в нужном мне формате.

Я использую код:

ser.write('WER?\r\n'.encode())
meetgegevens = ser.readline()
m_str = str(meetgegevens)
print(m_str)
lst = list(m_str.split(';'))
print(lst)

with open('meetgegevens.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, delimiter=',')
    writer.writerows(lst)

Вывод print(m_str) is:

b'WERTEx=16:>310.0M\xea;17:>310.0M\xea;18:>310.0M\xea;19:>310.0M\xea;20:>310.0M\xea;21:>310.0M\xea;24:00.01mA;25:00.01mA;26:00.01mA;27:00.01mA;28:00.01mA;29:00.05mA;30:00.12mA;58:228.2V;59:050.0Hz;62:226.5V;63:227.2V;81:00.12?;96:0535.V;97:0535.V;98:0535.V;\r\n'

Вывод print(lst):

["b'WERTEx=16:>310.0M\\xea", '17:>310.0M\\xea', '18:>310.0M\\xea', '19:>310.0M\\xea', '20:>310.0M\\xea', '21:>310.0M\\xea', '24:00.01mA', '25:00.01mA', '26:00.01mA', '27:00.01mA', '28:00.01mA', '29:00.05mA', '30:00.12mA', '58:228.2V', '59:050.0Hz', '62:226.5V', '63:227.2V', '81:00.12?', '96:0535.V', '97:0535.V', '98:0535.V', "\\r\\n'"]

Данные в списке отформатированы как 'address: value'. Я хотел бы записать его в CSV-файл, где каждый объект списка находится в новой строке в следующем формате: row1 column1 содержит адрес, а строка 1 column 2 содержит значение.

Пока я только можно получить каждый элемент списка в новой строке, но он находится в одном столбце, а за каждым символом следует запятая.

Кто-нибудь знает, что я делаю неправильно?

1 Ответ

0 голосов
/ 16 марта 2020
import csv
m_str = 'WERTEx=16:>310.0M\xea;17:>310.0M\xea;18:>310.0M\xea;19:>310.0M\xea;20:>310.0M\xea;21:>310.0M\xea;24:00.01mA;25:00.01mA;26:00.01mA;27:00.01mA;28:00.01mA;29:00.05mA;30:00.12mA;58:228.2V;59:050.0Hz;62:226.5V;63:227.2V;81:00.12?;96:0535.V;97:0535.V;98:0535.V;\r\n'

lst = list(m_str.split(';'))

myCsvData = []
for word in lst:
    split = word.split(':')
    try:
        row = [split[0], split[1]]
        myCsvData.append(row)
    except:
        pass

print(myCsvData)
with open('meetgegevens.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile, delimiter=',')
    for row in myCsvData:
        writer.writerow(row)

Кое-что для вас, чтобы продолжить ..

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