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

ElementTree & Unicode

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

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

Пытаюсь разобрать вот такой 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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....

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

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

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

Возможно, Error.
Поле
Код
ex._type: Python Type: "Error"
ex.message:   "Syntax error at line 10: illegal character in content"
Версия Iron Python:
Код
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  [ТС] 4
Воспользовался 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
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
23.02.2016, 09:09 5
anonimouse, у меня все нормально работает. Возможно глюк альтернативной реализации. Лучше использовать оригинальный cpython.
0
23.02.2016, 09:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.02.2016, 09:09
Помогаю со студенческими работами здесь

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

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

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

MFC CEdit & unicode
имеем диалоговое юникодовое MFC приложение. в диалоге имеем CEdit m_Edit; вводим в окошко...

Unicode & Ansi в XE2
Всем привет. Проблема такая: работаю на Embarcadero RAD Studio XE2, а компоненты там все на...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru