Python конвертирует символы в символы - PullRequest
0 голосов
/ 13 июня 2018

У меня проблема, и я не знаю, как начать ее решать.

У меня есть XML-файл.Вот пример:

<resources>
    <string name="menuOptionMdReceiptIcon">&#xf1b4;</string>
    <string name="menuOptionMdStoreMallDirectoryIcon">&#xf1d4;</string>
    <string name="menuOptionMdPersonIcon">&#xf207;</string>
    <string name="menuOptionMdLocalAtmIcon">&#xf198;</string>
    <string name="menuOptionMdSwapHorizIcon">&#xf30d;</string>
    <string name="menuOptionMdPeopleIcon">&#xf20d;</string>
</resources>

это мой код:

import sqlite3
from xml.dom import minidom
import xml.etree.ElementTree as xml


dict_4_3 = {}

db = sqlite3.connect("table.db")
cursor = db.cursor()

cursor.executescript("""
 DROP TABLE IF EXISTS V_4_3;
 CREATE TABLE V_4_3 (ID integer primary key AUTOINCREMENT,
 TAG_NAME_4_3 TEXT,
 VALUE_4_3 TEXT);
 """)

xmldoc = minidom.parse('strings_4_3.xml')
xmldoc.normalize()
itemlist = xmldoc.getElementsByTagName('string')


for s in itemlist:
    try:
        dict_4_3[s.attributes['name'].value] = s.childNodes[0].nodeValue
        cursor.execute("""INSERT INTO V_4_3 (TAG_NAME_4_3, VALUE_4_3) VALUES (?, ?)""", (s.attributes['name'].value,
                                                                                         s.childNodes[0].nodeValue))
    except:
        cursor.execute("""INSERT INTO V_4_3 (TAG_NAME_4_3, VALUE_4_3) VALUES (?, ?)""", (s.attributes['name'].value,
                                                                                         None))

Я просто получаю значения из XML-файла и хочу поместить в БД SQLite.Поэтому моя проблема заключается в преобразовании последовательности, такой как «» в  в строках БД.Как заставить Python принимать значения без изменений и вставлять их в строки БД?

Спасибо за внимание.

1 Ответ

0 голосов
/ 13 июня 2018

Вот как работает XML.Сущность &#xf20d; обозначает символ .Синтаксический анализ XML включает преобразование объектов в символы, которые они указывают.Попытка сохранить коды сущностей, вероятно, плохая идея.SQLite должен иметь возможность хранить эти символы.

Однако, если вам действительно нужны сущности, вы можете сделать так, чтобы Python преобразовал не-ASCII-символы обратно в сущности, прежде чем записывать их в базу данных, например,

* 1006.*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...