Python正在将字符转换为符号

时间:2018-06-13 14:47:55

标签: python xml sqlite character-encoding

我遇到了麻烦,不知道如何解决它。

我有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 DB。所以我的麻烦就是像&#34;&amp;#xf20d&#34;到DB行中的。如何强制Python在没有更改的情况下获取值并将它们插入到DB行中?

感谢您的关注。

1 个答案:

答案 0 :(得分:1)

这就是XML的工作原理。实体<div class="container-fluid"> </div> <div class="row"> <ul> <?php foreach ($module as $row) :?> <div class="col-md-8"> <div class="toggleHolder"> <span class="toggler"><span>▾</span>Show More</span> <span class="toggler" style="display:none;"><span>▴</span> Show Less</span> </div> <li> <p class="post" data-id="<?php echo $row['id'] ?>"> <?php echo $row['naam'] ?> </p> </li> <div class="showpanel" style="display: none;"> <li> <p> <?php echo $row['beschrijving'] ?> </p> </li> <?php foreach ($patient as $row2): ?> <div class="col-md-10"> <div class='lists'> <li class="flex-item"> <p class="text-left border-bottom post2" data-id="<?php echo $row2['id'] ?>"> <?php echo $row2['voornaam'].' '.$row2['achternaam'];?> </p> <input class="btnSubmit" type="submit" value="Module toewijzen" /> </li> </div> </div> <?php endforeach; ?> </div> </div> <?php endforeach; ?> </ul> </div> 表示字符&#xf20d;。解析XML包括将实体转换为它们指示的字符。试图保留实体代码可能是一个坏主意。 SQLite应该能够存储这些字符。

但是,如果你确实需要这些实体,你可以让Python将非ASCII字符转换回实体,然后再将它们写入数据库,例如