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

ElementTree & Unicode

20.02.2016, 02:29. Показов 1498. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru