Хорошо, вот история. Я сохраняю большие числа с плавающей точкой в файле XML. например 0,016780745002189634. Числа правильно сохраняются в файле, но когда я анализирую xml и читаю их, некоторые из них (я выделяю самые большие из них) саксофона разбивают их на два разных числа. Нравится: 0,016780 и 745002189634.
Я использую кодировку UTF-8, если она имеет какое-то отношение, пробовал также iso та же проблема с разными результатами, думал.
Заранее спасибо
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())
Хм, я делаю что-то подобное, но для многих других элементов. Это один работает хорошо, я думаю, что где-то еще проблема. Я посмотрю на это. Вы очень помогли TKX