Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 18, 2017 23:59:52

nik.iwan2017
Зарегистрирован: 2017-06-17
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка файлов. Пожалуйста помогите!

doza_and
Я бы уже давно так сделал, но в этом и проблема. При попытке перекодировать в ср1251 при последующем открытии в кодировке 1251 выпадает ошибку и говорит, что не может прочитать какие-то символы.

Офлайн

#2 Июнь 19, 2017 06:28:05

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Кодировка файлов. Пожалуйста помогите!

Не знаю зачем вам это нужно, но и у encode и у decode есть параметр errors, если его установить в ‘ignore’, то символы, которых нет в выбранной кодировке будут пропускаться.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Июнь 19, 2017 19:32:35

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Кодировка файлов. Пожалуйста помогите!

PooH
Не знаю зачем вам это нужно, но и у encode и у decode есть параметр errors, если его установить в ‘ignore’, то символы, которых нет в выбранной кодировке будут пропускаться.
кстати да, совсем забыл
nik.iwan2017, попробуй
 f = open('1.txt')
txt = f.read().decode('utf-8',errors='ignore')
f.close()
f = open('2.txt','w')
f.write(txt.encode('cp1251'))
f.close()

Офлайн

#4 Июнь 19, 2017 20:42:17

nik.iwan2017
Зарегистрирован: 2017-06-17
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка файлов. Пожалуйста помогите!

PooH
vic57
Попробовал. Ничего не помогло. Считать получилось, но после того как начинаю парсить файл, применяя регулярку, начинает ругаться на то, что встретил непонятный символ.
Не знаю что делать с эим файлом.
Суть в том, что что мне надо отпарсить файл (получить телефон, адрес, время) но из-за этой кодировки ничего не получается.
Есть идеи?

Офлайн

#5 Июнь 19, 2017 21:23:57

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2828
Репутация: +  185  -
Профиль   Отправить e-mail  

Кодировка файлов. Пожалуйста помогите!

Ещё раз повторяю: у тебя бинарный файл и парсить его нужно как бинарник. Я бы на твоём месте попытался бы это сделать через http://kaitai.io/



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Июнь 19, 2017 23:23:47

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Кодировка файлов. Пожалуйста помогите!

nik.iwan2017
Есть идеи?
дык покажи свой код и ашипки. накостылить всяко можно
 #!/usr/bin/env python
# -*- coding:utf-8 -*-
import re
f = open('1.txt')
txt = f.read().decode('utf-8',errors='ignore')
f.close()
lst = re.findall("[+\d]+",txt)
for i in lst:
    if i.startswith('+'):print i
у меня это работает

Отредактировано vic57 (Июнь 20, 2017 12:21:41)

Офлайн

#7 Июнь 20, 2017 05:25:03

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Кодировка файлов. Пожалуйста помогите!

nik.iwan2017
Суть в том, что что мне надо отпарсить файл (получить телефон, адрес, время) но из-за этой кодировки ничего не получается.
Есть идеи?
Сдается мне вы в трех соснах заблудились. Когда открываете для поиска регуляркой кодировку указываете? А лучше скажите задачу целиком, что выдрать оттуда хотите?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#8 Июнь 20, 2017 05:26:17

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Кодировка файлов. Пожалуйста помогите!

Rodegast
Ещё раз повторяю: у тебя бинарный файл и парсить его нужно как бинарник. Я бы на твоём месте попытался бы это сделать через http://kaitai.io/
Ну если человеку нужно только выдрать текст, то возможно нет смысла разбирать неизвестный формат. Не зря же существуют утилитки типа strings.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#9 Июнь 20, 2017 06:20:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9999
Репутация: +  857  -
Профиль   Отправить e-mail  

Кодировка файлов. Пожалуйста помогите!

Там бинарный файл, в котором впермешку с данными есть строки в utf-8.
Нужно их прочитать в бинарном виде и раскодировать из utf-8 в unicode, а потом символы из unicode закодировать в бинарный вид в cp1251.

#!/usr/bin/env python3

with open('1.5', 'rb') as fin:
data = fin.read()

text = data.decode('utf-8', 'ignore')
out = text.encode('cp1251', 'ignore')

with open('1.5.out', 'wb') as fout:
fout.write(out)

По пути можно и текст отфильтровать, пока он в unicode, иначе бинарные данные попадают в выход.



Отредактировано py.user.next (Июнь 20, 2017 06:22:54)

Офлайн

#10 Июнь 20, 2017 13:34:49

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Кодировка файлов. Пожалуйста помогите!

PooH
Сдается мне вы в трех соснах заблудились.
походу ТС не врубается, что питон в юникоде работает
 #!/usr/bin/env python
# -*- coding:utf-8 -*-
import re
f = open('1.5')
txt = f.read().decode('utf-8',errors='ignore')
f.close()
lst = txt.split('"}')
for i in lst:
    print '*new line'
    l = re.findall(ur'[а-яА-Я0-9+(){}"|;:., ]+',i)
    print ' '.join(l) + '"}'
УМВР

Отредактировано vic57 (Июнь 20, 2017 14:38:15)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version