У меня есть несколько файлов XML с кодировкой utf-8. Эти файлы на разных языках. Мне нужно проанализировать эти файлы (я использую метод elementTree), затем получить конкретный текст из каждого файла, а затем разделить этот текст. Проблема возникает, когда я пытаюсь выполнить синтаксический анализ в языках, в которых есть специальные символы (что довольно хорошо подходит для всех языков, кроме английского) Мне нужен точный текст, показанный в файлах xml, а не кодирующая версия python, чтобы разделение работало и получало полученные данные из длинных текстов, которые я анализирую.
Я прочитал, как работает кодировка utf-8 в python, и, в частности, я повторяю это из официальной документации по python.
If the code point is < 128, it’s represented by the corresponding byte value.
If the code point is >= 128, it’s turned into a sequence of two, three, or four bytes, where each byte of the sequence is between 128 and 255.
Я также читал, что из python 3 и более поздних версий можно отображать специальные символы, но я использую python 2.7, а программный инструмент, который я запускаю, моя программа не может поддерживать python 3.
Код следующий:
import xml.etree.ElementTree as et
import sys
import io
import string
import codecs
print("using texttool_navi.py" + sXmlFile)
#intializing Variables
sAddress = ''
sAcronym = ''
sPlace = ''
sData = ''
# parse texttool file
Parser =et
tree = et.parse(sXmlFile)
root = tree.getroot()
for child in root:
if child.attrib["ID"] == sID:
schild = et.tostring(child,encoding = 'utf-8')
print('line ' + schild)
sData = child.text
sData = string.split(sData, '"')
print(sData)
sAddress = sData[1]
sAcronym = sData[3]
sPlace = sData[5]
if sID == 'a specific ID':
sAddress = string.replace(sAddress, '\\n', ' ')
sAcronym = string.replace(sAcronym, '\\n', ' ')
sPlace = string.replace(sPlace, '\\n', ' ')
печать есть сейчас только для моего удобства, она не нужна для работы, которую я хочу сделать.
Чтобы дать вам более конкретный пример, одна часть текста в файле XML:
Ettinger Straße
И что я получаю после преобразования шильда в строку так:
Ettinger Straße⠀ 1011 *
Есть ли способ получить специальные символы, которые должны выводиться из анализа?