Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 10

Python2, split и проверка на равенство по русскому слову

12.01.2017, 07:20. Показов 1250. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть текст в котором сущности разделены словом "товар"
внутри нее есть другие теги на русском. по ним надо делать сравнения.

В коде split срабатывает, и проверка на равенство тоже работает.

Но мне нужно в отладчике проверить некоторые ситуации. И именно в отладчике на text.split('товар') выходит ошибка:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 24-25: ordinal not in range(128)

как можно написать выражение в отладчике чтобы эта ошибка не выходила?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.01.2017, 07:20
Ответы с готовыми решениями:

Проверить равенство содержимого элемента структуры слову
Снизу представлен код, который должен выводить всех студентов, которые проживают в Москве и имеют пятерки по всем предметам. Программа не...

Проверка на принадлежность слову палиндрому
Ввести строку, состоящую из одного слово, проверить будет ли оно читаться одинаково справа налево и слева направо (т.е. является ли оно...

Проверка на равенство значений
Извините, спрошу: А почему в Прологе 2+2=2*2 ответ нет, а 2+2=:=2*2 ответ верно? Правильно ли я рассуждаю, что оператор = в первом случае...

9
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.01.2017, 07:32
ЛезгиноХохол, код покажи
0
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 10
12.01.2017, 08:08  [ТС]
файл

Данные
имя :Сергей
фамилия :Петренко
Возраст :25

Данные
артикул :ука456
цена :34
количество :345

Данные
имя :Игнат
фамилия :Пахомов
Возраст :50
....

и так далее.

Код

for item in mytext.split("Данные"):
.....
if item.split(':')="имя"
....

Добавлено через 3 минуты
В коде сработало. А в отладчике выдавал ошибку.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.01.2017, 08:36
Цитата Сообщение от ЛезгиноХохол Посмотреть сообщение
А в отладчике выдавал ошибку.
Что ты подразумеваешь под отладчиком?
0
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 10
12.01.2017, 09:42  [ТС]
Debugger, evaluate expression.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.01.2017, 10:00
Ок, задам вопрос по другому. Какой дебагер ты используешь, как запускаешь дебаг. Показывай скринами все.
Миниатюры
Python2, split  и проверка на равенство по русскому слову   Python2, split  и проверка на равенство по русскому слову  
0
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 10
12.01.2017, 10:07  [ТС]
Ide pycharm

Код:
#подключение к почтовому ящику:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def connect():
    if type == 'imap':
        if is_ssl:
            connection = IMAP4_SSL(server, int(port))
        else:
            connection = IMAP4(server, int(port))
        connection.login(user, password)
    elif type == 'pop':
        if is_ssl:
            connection = POP3_SSL(server, int(port))
        else:
            connection = POP3(server, int(port))
        # TODO: use this to remove only unread messages
        # connection.user("recent:"+server.user)
        connection.user(user)
        connection.pass_(password)
    # Add timeout on socket
    connection.sock.settimeout(MAIL_TIMEOUT)
    return connection

#основная рабочая функция.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def fetch_reg_mail():
    count, failed = 0, 0
    if type == 'imap':
        try:
            imap_server = connect()
            imap_server.select()
            result, data = imap_server.search(None, '(UNSEEN)')
            for num in data[0].split():
                print "ok"
                res_id = None
                result, data = imap_server.fetch(num, '(RFC822)')
                imap_server.store(num, '-FLAGS', '\\Seen')
                try:
                    res_id = parse_registration(data[0][1])
                except Exception:
                    failed +=1
                    print "parse error on message %s", data[0][1]
 
            #imap_server.store(num, '+FLAGS', '\\Seen')
 
        except Exception:
            print "connection error"
#и парсинг письма
Python
1
2
3
4
5
6
7
8
9
10
def parse_registration(message):
    if isinstance(message, xmlrpclib.Binary):
        message = str(message.data)
    # Warning: message_from_string doesn't always work correctly on unicode,
    # we must use utf-8 strings here :-(
    if isinstance(message, unicode):
        message = message.encode('utf-8')
    msg_txt = email.message_from_string(message)
    mydict=dict((field.strip(), data.strip()) for field, data in (pair.split(':',1) for pair in msg_txt._payload.split("REG_DATA")[1].strip().split('\n')))
    print mydict
Добавлено через 5 минут
последняя строчка print mydict вместо текста выводит:
Python
1
"last_name': '\xd0\x91\xd1\x96\xd0\xbb\xd0\xbe\xd1\x88\xd0\xb8\xd1\x86\xd1\x8c\xd0\xba\xd0\xb8\xd0\xb9', 'name': '\xd0\xa1\xd0\xb5\xd1\x80\xd0\xb3\xd1\x96\xd0\xb9'"
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.01.2017, 10:10
Цитата Сообщение от ЛезгиноХохол Посмотреть сообщение
последняя строчка print mydict вместо текста выводит:
Это python 2, сам выбрал эту древность. Он не умеет отображать нормально юникод, когда ты выводишь объект. Если будешь обходить этот словарь циклом и выводить значения всех ключей, то все будет нормально.
0
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 10
12.01.2017, 10:11  [ТС]
Структура письма:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
любой текст и картинки
 
 
REG_DATA
name                          : Сергій
last_name                   : Білошицький
job_title                      : провідний інженер
organisation                : Укрзалізниця
company_website       : [url]http://www.uz.gov.ua/[/url]
country                      : Україна
Mobile phone             : 0976210067
office phone               : -
Email                         : [email]sergharold@gmail.com[/email]
Event                         : Ukraine-Israel Forum '16
type_of_participation  : -
REG_DATA
 
любой текст и картинки
запускал отладку и на последних строках открывал окно evaluate expression и пробовал разные варианты чтобы получить словарь.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.01.2017, 10:17
Цитата Сообщение от ЛезгиноХохол Посмотреть сообщение
открывал окно evaluate expression и пробовал разные варианты чтобы получить словарь.
Цитата Сообщение от alex925 Посмотреть сообщение
Это python 2, сам выбрал эту древность. Он не умеет отображать нормально юникод, когда ты выводишь объект. Если будешь обходить этот словарь циклом и выводить значения всех ключей, то все будет нормально.
Уже ответил на это. Такое отображение текста в юникоде норма для двойки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2017, 10:17
Помогаю со студенческими работами здесь

Проверка на равенство строк
Всем привет! Есть абстрактный класс Transport и классы наследники: Train, Plane, Ship. есть метод. принимает параметр type(Значения: all,...

Проверка на равенство чисел
ничего не выводит, а должно var a, b, c, d, e, f, g, h, i, Q, W, R , T, Y, U, O, P: integer; begin repeat begin a:=...

Проверка множеств на равенство
Опишите множества M1(1,2) и M2(2,1). Сравните их на равенство. program zadacha1; uses crt; const M1=; M2=; begin clrscr; if...

Проверка на равенство строк
my @names = ('I','II','III','IV','V','VI','VII','VIII','IX'); my $uc = <STDIN>; for (my $i = 0; $i < 9; $i++) { if ($names eq...

Проверка векторов на равенство
Даны 2 вектора. Например (1 2 3) и (1 2 3).. Нужен код который проверяет их на равенство,если равны то хорошо,а если нет то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru