
Kolyann
11.01.2016
15:13:21
тьфу
почему кодировку жуёт хз, я таким не сталкивался
может он в одну из виндовых перепиливает?

Aliaksiej
11.01.2016
15:13:44
ты мне предлагаешь толпе хомячков объяснить, куда правильно тыкать в экселе, отправить на мою аппу?

Google

Aliaksiej
11.01.2016
15:14:03

Pavel
11.01.2016
15:14:10
Файл можешь выложить?

Aliaksiej
11.01.2016
15:14:29
думаю да

Pavel
11.01.2016
15:14:31
Хотя, я же на телефоне...

Aliaksiej
11.01.2016
15:14:49
хотя это не суть важно
эксель может стоять и на японской винде и на любой другой

Ilya
11.01.2016
15:15:13
а посмотрел чо изменилось?

Aliaksiej
11.01.2016
15:15:17
и я точно знаю, что в зависимости от локали он может использовать разные кодировки и разные разделители
ну в частном случае изменилась кодировка, разделители и пропал UTF-8 BOM
но это на маке, на котором русская локаль и офис от мса было сделано
я хз, чего ждать от других локалей

Pavel
11.01.2016
15:16:19
Если файл остался утф8 то и чёрт с бомом.

Kolyann
11.01.2016
15:16:28
у меня когда открываю файл автоматом предлагает выбрать кодировку

Google

Ilya
11.01.2016
15:16:45
разделители кстати разные бывают
ну то есть тут наверное надо запаритьвася с декодированием всего подряд в себя

Aliaksiej
11.01.2016
15:17:33

Ivan
11.01.2016
15:17:37
А никак у пользователя спросить, что он за разделители использовал?

Ilya
11.01.2016
15:17:42
https://github.com/onyxfish/csvkit

Ivan
11.01.2016
15:17:43

Pavel
11.01.2016
15:17:43
Я где-то видел пост как Эксель открывает цсв. Там пизднец магия. 5 или 6 признаков он анализирует

Aliaksiej
11.01.2016
15:17:52
А какой?
я пока не определил. Собственно как определить то?

Ivan
11.01.2016
15:18:08

Aliaksiej
11.01.2016
15:18:16
точно не utf-8 и точно не windows-1251

Pavel
11.01.2016
15:18:30
Запятая или таб, другое трудно.

Aliaksiej
11.01.2016
15:18:33

Ivan
11.01.2016
15:18:35

Ilya
11.01.2016
15:18:43
то есть схема что ты заэкспортил, он открыл, подправил, сохранил и вернул тебе цсв? но апа теперь не видит?

Aliaksiej
11.01.2016
15:18:45
я генерил запятыми, он вернулся с точка с запятой

Pavel
11.01.2016
15:18:55
Проверь два вариант а, какой-то сработает

Ilya
11.01.2016
15:19:05
тогда я бы реально брал например цсв кит, тырил исходники для разбору и не парился
цсв в каждой апе свой

Aliaksiej
11.01.2016
15:19:11

Google

Ilya
11.01.2016
15:19:18
либо просить не открывать в экселе
либо уметь открывать что угодно

Ivan
11.01.2016
15:19:23

Aliaksiej
11.01.2016
15:19:26
я не видел csvkit
пойду гляну
ну в идеале
формально никто не мешает поменять
хотя там вообще все ляснется тогда

Pavel
11.01.2016
15:19:50
Сделай гуй для редактирования. ?

Aliaksiej
11.01.2016
15:20:25

Ivan
11.01.2016
15:20:27
формально никто не мешает поменять
Ну, если бы были одинаковы, то принципиально можно было бы разделитель понять посимвольно сравнивая файлы - первое расхождение и будет тем самым разделителем

Aliaksiej
11.01.2016
15:21:30
с горем пополам разделитель определяет стандартный сниффер
а вот кодировка - тот еще вопрос

Pavel
11.01.2016
15:22:41
Лет 10 назад было модно делать конвериеры кодировок. Может оттуда эвристики вернуть?

Ivan
11.01.2016
15:22:43
а вот кодировка - тот еще вопрос
"..There is the chardet library that uses that study to try to detect encoding. chardet is a port of the auto-detection code in Mozilla."

Ilya
11.01.2016
15:23:05
а .encode("utf8") не канает?

Aliaksiej
11.01.2016
15:23:08
UnicodeDecodeError: 'utf8' codec can't decode byte 0xd0 in position 44: invalid continuation byte

Google

Ilya
11.01.2016
15:23:24
дак проще внутри обрабатывать :)

Ivan
11.01.2016
15:23:31

Aliaksiej
11.01.2016
15:23:40

Ivan
11.01.2016
15:23:46

Ilya
11.01.2016
15:23:54
потом декоде"cp1251"
хотя если на винде

Ivan
11.01.2016
15:24:08

Ilya
11.01.2016
15:24:12
я просто запарился с цп1251 для запрет инфо

Admin
ERROR: S client not available

Aliaksiej
11.01.2016
15:24:20
.csv: ISO-8859-2 with confidence 0.7680486513248371

Ilya
11.01.2016
15:24:22
везде норм утф, а у них 1251 с глюками

Aliaksiej
11.01.2016
15:24:25
таки не 1251

Ivan
11.01.2016
15:24:35

Aliaksiej
11.01.2016
15:25:05
ладно, попробуем открыть в определенной кодировке

Ivan
11.01.2016
15:29:47

Aliaksiej
11.01.2016
15:29:57
не спеши :)
странно, что-то из коммандлайна оно определило кодировку, а вот из консоли питона не осилило

Ivan
11.01.2016
15:39:39
может слишком длинную строку кормишь?

Aliaksiej
11.01.2016
15:39:46
>>> d = UniversalDetector()
>>> f = open('./test.csv')
>>> for line in f:
... d.feed(line)
... if d.done: break
...
>>> d.result
{'confidence': 0.0, 'encoding': None}

Google

Aliaksiej
11.01.2016
15:41:41
>>> data = f.read()
>>> chardet.detect(data)
{'confidence': 0.7655266567779939, 'encoding': 'ISO-8859-2'}
однако
но я не могу себе позволить считать абсолютно весь файл
сразу
в пямять
ладно, я кажется понял, что я упустил
>>> d.close() вот что я пропустил
но оно все равно весь файл считало в итоге

Kolyann
11.01.2016
15:47:58

Aliaksiej
11.01.2016
15:48:09
оно тут носит другой смысл
типа дать детектору понять, что больше строк не будет, он тогда сделает предположение о том, что там всетаки за кодировка

Kolyann
11.01.2016
15:48:40
ы

Aliaksiej
11.01.2016
15:56:40
ну хз, с горем пополам я таки распарсли конкретный файл. Не знаю, что будет на каких-либо других экзотических локалях...

Maxim robox
11.01.2016
15:59:44

Ivan
11.01.2016
16:01:52

Aliaksiej
11.01.2016
16:02:31
Так ему может ещё не попасться строка не ascii символа

Ivan
11.01.2016
16:03:02

Aliaksiej
11.01.2016
16:03:11

Ivan
11.01.2016
16:03:33