ここに話があります。大きな浮動小数点数をxmlファイルに保存します。例えば0.016780745002189634である。数値はファイルに正しく保存されますが、xmlを解析して読み込むと、それらのうちのいくつか(最大のものを押します)は、2つの異なる数値に分割されます。のような:0.016780と745002189634。 私はutf-8エンコーディングを使用しています。何かする必要がある場合は、別の結果を考えてiso同じ問題を試してみてください。事前に おかげでpython saxは大きな浮動小数点数を解析しています
import xml.sax
from xml.sax.saxutils import XMLGenerator
from xml.sax.xmlreader import AttributesNSImpl
floattosave = 0.016780745002189634
def xmlindex():
logger = XMLGenerator(open('.\\a.xml','w'), 'utf-8')
logger.startDocument()
attrs = AttributesNSImpl({}, {})
logger.startElementNS((None,'Articles'), 'Articles', attrs)
attr_vals = {
(None, 'id'): str(1)
}
attr_qnames = {
(None, 'id'): 'id'
}
attrs = AttributesNSImpl(attr_vals, attr_qnames)
logger.startElementNS((None, 'Article'), u'Article', attrs)
attr_vals1 = {
(None, 'word'): 'lalala'
}
attr_qnames1 = {
(None, 'word'): 'word'}
attrs1 = AttributesNSImpl(attr_vals1, attr_qnames1)
logger.startElementNS((None, 'Lemma'), 'Lemma', attrs1)
logger.characters(repr(floattosave))
logger.endElementNS((None, 'Lemma'), 'Lemma')
logger.endElementNS((None, 'Article'), 'Article')
logger.endElementNS((None, 'Articles'), 'Articles')
logger.endDocument()
class myhandler(xml.sax.ContentHandler):
def __init__(self):
xml.sax.ContentHandler.__init__(self)
self.w = 0
self.child = 0
def startElement(self,name,attrs):
if name == 'Article':
self.child = 1
if name == 'Lemma':
self.child = 2
def characters(self, content):
if self.child == 2:
print content
a = float(content)
print a
xmlindex()
xml.sax.parse(open('.\\a.xml'),myhandler())
うーん、私はそのような多くのより多くの要素のために何かをすること。これは良い仕事です、私は別の場所に問題があると思います。私はそれを調べます。あなたは多くの手助けをしました
問題を解決しました。ご協力いただきありがとうございます。 – user1181235