Я хочу прочитать данные из файла .sav (SPSS) и переписать их в .csv для дальнейшего использования.Для чтения я использую savReaderWriter.SavReader
, и он возвращает все строки в байтовой записи: b'string'
вместо 'string'
.
Ниже приведен мой код в Python 3.6:
import savReaderWriter
import csv
with savReaderWriter.SavReader('input_filename.sav') as reader:
header = reader.header
with open('output_filename.csv','w',newline='') as output:
w = csv.writer(output,delimiter=',')
w.writerow(header)
for line in reader:
w.writerow(line)
OneРешение, которое я нашел, состоит в том, чтобы указать ioUtf8=True
в SavReader
, но затем все переменные даты преобразуются в число с плавающей точкой: b'2017-09-02'
становится 13723689600.0
, который затем читается datetime.fromtimestamp
как год 2404.
Еще одна вещь, которая работает, это
w.writerow([h.decode('utf-8') for h in header])
, но только для заголовка, так как другие строки содержат числа с плавающей запятой и нани и, следовательно, вызывают ошибки.
Указание 'wb'
вместо 'w'
in open
также возвращает ошибку:
TypeError: a bytes-like object is required, not 'str'
Есть идеи, как правильно читать и записывать данные такого типа?