Я пытаюсь сжать CSV-файл без использования каких-либо сторонних или инфраструктурных библиотек сжатия.сжатие файла csv без использования существующих библиотек в Python
Я пробовал, что я хочу думать, все. Я посмотрел на Хаффмана, но, поскольку мне не разрешено использовать это решение, я пытался сделать свое.
Пример:
6NH8,F,A,0,60541567,60541567,78.78,20
6NH8,F,A,0,60541569,60541569,78.78,25
6AH8,F,B,0,60541765,60541765,90.52,1
QMH8,F,B,0,60437395,60437395,950.5,1
Я сделал алгоритм, который подсчитывает каждый символ и дает мне количество раз они были использованы, и в зависимости от того, сколько времени они были посвящен ряд.
',' --- 28
'5' --- 18
'6' --- 17
'0' --- 15
'7' --- 10
'8' --- 8
'4' --- 8
'1' --- 8
'9' --- 6
'.' --- 4
'3' --- 4
'\n'--- 4
'H' --- 4
'F' --- 4
'2' --- 3
'A' --- 3
'N' --- 2
'B' --- 2
'M' --- 1
'Q' --- 1
[(',', 0), ('5', 1), ('6', 2), ('0', 3), ('7', 4), ('8', 5),
('4', 6), ('1', 7), ('9', 8), ('.', 9), ('3', 10), ('\n', 11),
('H', 12), ('F', 13), ('2', 14), ('A', 15), ('N', 16), ('B', 17),
('M', 18), ('Q', 19)]
Таким образом, вместо того, чтобы хранить, например, Ord ('Н') = 72, я дам H значение 12, и так далее.
Но, когда я меняю все символы на мои значения, мои сгенерированные cvs (> 40 МБ) по-прежнему больше оригинала (19 МБ).
Я даже попробовал альтернативы, чтобы разделить список на 2. i.e для одной строки сделать это двумя строками.
[6NH8,F,A,0,]
[60541567,60541567,78.78,20]
Но все же больше, даже больше, чем моя версия «huffman».
ВОПРОС: Кто-нибудь есть какие-либо предложения о том, как 1.read файл .csv, 2.Use что-то вот в LIB. или третьей стороной. 3.генерировать и писать меньше .csv-файл?
Для шага 2 Я не прошу полного вычислительного решения, просто советы о том, как свести к минимуму файл, например, написать каждое значение как один список? и т.д.
Спасибо
Почему вы не хотите использовать существующие библиотеки? – MattDMo
заданий говорит не :) –