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

ElementTree & Unicode

20.02.2016, 02:29. Показов 1529. Ответов 4

Студворк — интернет-сервис помощи студентам
Привет,

Пытаюсь разобрать вот такой XML

XML
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8"?>
<article>
<text>
 <br />The ease of leveraging digital technology 
is giving rise to a new workforce – digital nomads.
... 
</text>
</article>
который я читаю из файла вот таким кодом

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
try:
    with codecs.open(segmentFilePath, 'r', 'utf-8' ) as source:
        l = []
        l.append('<?xml version="1.0" encoding="UTF-8"?>')
 
        for line in source:
            l.append( line )
        xmlString = ''.join(l)
 
        try:
            tree = ET.fromstring( xmlString )
        except Exception as ex :
            raise ArticleConstruction # попадаю сюда
Похоже, что исключение возникнет всегда, если в XML встретился символ не us-ascii кодировки.

Черточка между словами workforce и digital - символ UNICODE "Среднее тире", U+2013

Этот символ не запрещен стандартом( согласно https://en.wikipedia.org/wiki/... ers_in_XML ),
но для него есть альтернативный код - entity &ndash;

Хотя, проверил и вставил русскую букву ы в XML-документ выше - так же вылетает.

Вопрос, точнее 2:

1. Как читать Iron - Питоном Юникодные XML-документы правильно, и
2. Как рекомендуете почистить входные тексты, раз я их читаю вручную ( а делаю это из-за гигантского размера входных файлов, тут пропущен код, где я вручную выделяю крупные секции для парсинга )
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.02.2016, 02:29
Ответы с готовыми решениями:

Lxml назначение etree.ElementTree
Объясните, пожалуйста, в чем назначение etree.ElementTree в библиотеке lxml? Нигде не могу найти толкового объяснения. Объект...

Создание XML через ElementTree
Доброго времени суток, господа! Я создаю xml-файлы с помощью ElementTree и всё сохраняется прекрасно. Но без переносов строк и...

ElementTree и FB2: ParseError в файлах cp1251
Занялся я тут на досуге парсингом fb2-книг. Использую Python 3x, компонент xml.etree.ElementTree. Случилась у меня засада. Если файл в...

4
 Аватар для ivlevdenis
21 / 34 / 14
Регистрация: 23.07.2014
Сообщений: 148
20.02.2016, 22:19
Не нужно забывать указывать версию питона!
Для теста убери except и посмотри какая точно ошибка.
Не понятно для чего ты еще раз добавляешь строку '<?xml version="1.0" encoding="UTF-8"?>', если она уже есть в файле.
0
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 3
21.02.2016, 23:41  [ТС]
Тип не знаю, как посмотреть.

Возможно, Error.
Поле
Code
1
2
ex._type: Python Type: "Error"
ex.message:   "Syntax error at line 10: illegal character in content"
Версия Iron Python:
Code
1
2
3
4
D:\texts>"C:\Program Files (x86)\IronPython 2.7\ipy.exe"
IronPython 2.7.5 (2.7.5.0) on .NET 4.0.30319.18063 (32-bit)
Type "help", "copyright", "credits" or "license" for more information.
>>>
Буду благодарен за любые подсказки, а может быть, за рецепт, как парсить Юникодный XML в IronPython.
0
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 3
23.02.2016, 01:01  [ТС]
Воспользовался System.Xml.Linq заместо этого корявого ElementTree

Python
1
2
3
4
5
6
7
8
import clr
clr.AddReference('System.Xml.Linq')
from System.Xml.Linq import XDocument, XName, XText
 
try:
    tree = XDocument.Parse( xmlString )
except Exception as ex :
    raise ArticleConstruction
Вроде работает!

Тему можно закрывать.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
23.02.2016, 09:09
anonimouse, у меня все нормально работает. Возможно глюк альтернативной реализации. Лучше использовать оригинальный cpython.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.02.2016, 09:09
Помогаю со студенческими работами здесь

Работа с модулем xml.etree.ElementTree
Добрый день, возникла проблема у меня с этим модулем, справа на скриншоте типовой xml к которому мне необходимо придти, а получается как...

Не работает tostring в xml.etree.ElementTree
Добрый день. При выполнении вот такого кода: claims_text=&quot;&quot; sep=&quot;&quot; for claim_item in claim_sel: ...

query='SELECT * FROM resume WHERE ' & ''' & RecSet('place')& ''' & '=' & '''& s_loc &''' & - что не так?
упростил для краткости запрос. в чем ошибка? RecSet - это коннекшн. query='SELECT * FROM resume WHERE ' &amp; ''' &amp;...

MASM & Unicode
Можно ли MASM подружить с юникодом? То есть использовать в программе эти строки? Если использовать строки сразу в коде, то придется и сам...

ANSI & UNICODE
можно ли в новых Делфи студиях переключаться на режим анси/юникод? все проекты под новыми студиями-юникод, надо ансишные ехе ps сам...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru