2013-09-26 6 views
5

वहाँ कम से XML और HTML चरित्र संदर्भ की एक सूची है।परिवर्तित एक्सएमएल अवैध और UTF8 करने के लिए चार अजगर

लेकिन वहाँ चीजें हैं जो उस सूची में सब पर परिभाषित नहीं कर रहे हैं लेकिन वे बड़े एचटीएमएल लिपियों में इस्तेमाल किया गया। जब मैं डेटासेट http://www.d.umn.edu/~tpederse/data.html से संसाधित कर रहा हूं, तो मुझे निम्न शब्दों का सामना करना पड़ता है जहां यह मेरी स्क्रिप्ट को तोड़ता है जिसने डेटा को पार्स करने के लिए xml.et.elementTree का उपयोग करने का प्रयास किया।

इन शब्दों में से यूनिकोड तुल्यता क्या हैं?

&and. 
&and.A 
&and.B 
&and.D 
&and.L's 
&backquote.alim) 
&backquote.ulema 
&dash 
&dash. 
&dash." 
&dashq. 
&degree. 
&degree.C 
&ellip 
&ellip. 
&ellip.0 
&ellip.1 
&ellip.11 
&ellip.2 
&ellip.23 
&ellip.28 
&ellip.38 
&ellip.4 
&ellip.6 
&ellip.64 
&ellip.?" 
&ellip.two 
&times. 

मेरी स्क्रिप्ट:

Traceback (most recent call last): 
    File "senseval.py", line 4, in <module> 
    tree = et.parse(s1) 
    File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1182, in parse 
    tree.parse(source, parser) 
    File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 656, in parse 
    parser.feed(data) 
    File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1642, in feed 
    self._raiseerror(v) 
    File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1506, in _raiseerror 
    raise err 
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 41, column 113 
+0

उन एक्सएमएल संस्थाओं नहीं कर रहे हैं ठीक करने के लिए, तिनका एक को समाप्त करना चाहिए 'अगर;' है, न कि '.'। इकाई संदर्भ: http://www.w3.org/TR/xml-entity-names/ – mata

+0

कोई विचार है कि वे क्या हैं? – alvas

+0

वास्तव में नहीं। 'dash' एक [html5 वर्ण इकाई] (http://dev.w3.org/html5/html-author/charref) हो सकता है, लेकिन दूसरी ओर 'ellip' कहीं भी एक मान्य इकाई नहीं है जिसे मैं पा सकता हूं, न तो 'डिग्री' है ... – mata

उत्तर

3

मैं इस जवाब यह है कि यह संभव अजगर lxml पैकेज का उपयोग अपने xml पार्स करने के लिए बनाया पाया:

import xml.etree.ElementTree as et 
s1 = 'train-fix.xml' # from http://www.d.umn.edu/~tpederse/Data/Sval1to2.fix.tar.gz 
tree = et.parse(s1) 
root = tree.getroot() 

इस ट्रैस बैक देता है Fetching data using Python & lxml

यहां से lxml पैकेज स्थापित करें: http://lxml.de/

और इस कोड का उपयोग करें:

import lxml.html 
root = lxml.html.parse('train-fix.xml').getroot() 

आशा है कि यह काम करेंगे आप

+0

+1 लेकिन यह उन वर्णों की समस्या का समाधान नहीं करता है? = = – alvas

3

बुनियादी लेकिन निराशाजनक जवाब है के लिए: वे लेखन कर रहे हैं (; के बजाय . का उपयोग करना)।

उनमें से ज्यादातर यहाँ:

... और इतने पर, आप के लिए है इनमें से कुछ के लिए संदर्भ देखें, यह तय करने के लिए कि क्या मूल पाठ लेखक का मतलब कुछ विशिष्ट था, या बस टाइप किया गया और भी बदतर (dashq‽)।

कार्रवाई का आपका सबसे उचित तरीका स्ट्रिंग replace पार्सिंग से पहले, गड़बड़ी को ठीक करने के लिए विधि कॉल की एक साधारण श्रृंखला का उपयोग करना है।

4

"शब्दों" विकृत entity references की तरह लग रहे। एक मान्य इकाई संदर्भ अंत में एक अर्धविराम है। मैंने test-fix.xml (Sval1to2.fix.tar.gz में) देखा और ऐसा लगता है कि &dash (या &dash.) किसी प्रकार का डैश या हाइफ़न का प्रतिनिधित्व करने के लिए है। फ़ाइल में .xml एक्सटेंशन है और खराब इकाई संदर्भ तय किए जाने पर यह अच्छी तरह से गठित एक्सएमएल होने के काफी करीब होगा।

पेज है कि आप करने के लिए (http://www.d.umn.edu/~tpederse/data.html) लिंक पर, यह कहते हैं:

कृपया ध्यान दें कि हमारे परिवर्तित डेटा सच एक्सएमएल पाठ के रूप में "पार्स" नहीं होंगे। यह इस तथ्य के कारण है कि मूल अर्थ-टैग किए गए पाठ में, वर्ण जिन्हें xml में विशेष हैंडलिंग की आवश्यकता होती है, वे बच नहीं पाए जाते हैं, और बहुत आगे। हम इस डेटा को "सत्य" एक्सएमएल बनाने के तरीकों पर विचार कर रहे हैं, और यह सर्वोत्तम तरीके से करने के तरीके पर किसी भी प्रतिक्रिया के लिए सबसे आभारी होंगे।

तो दस्तावेज़ दस्तावेज़ की तरह बहुत अधिक दिखता है, हालांकि यह एक्सएमएल नहीं है और इसे प्रकाशित करने वाले लोग इसके बारे में अच्छी तरह जानते हैं।

2

आप लिनक्स उपलब्ध उपयोग xmllint त्रुटियाँ नजर आती हैं और उन्हें

xmllint --recover ~/tmp/test-fix.xml --output ~/tmp/test-fix-fixed.xml 
/home/luis/tmp/test-fix.xml:179: parser error : EntityRef: expecting ';' 
inate, Hesse and the Saarland; North Rhine-Westphalia, Baden-Wu&umlaut.rttemberg 
                     ^
/home/luis/tmp/test-fix.xml:179: parser error : EntityRef: expecting ';' 
Bavaria would remain untouched, and the planned five East German La&umlaut.nder 
... 
/home/luis/tmp/test-fix.xml:3832: parser error : EntityRef: expecting ';' 
Charlie Watts today) we should be ready to hit the road together as Lyndon &and. 
                     ^
/home/luis/tmp/test-fix.xml:3841: parser error : Opening and ending tag mismatch: corpus line 1 and lexelt 
</lexelt> 
    ^
/home/luis/tmp/test-fix.xml:3842: parser error : Extra content at the end of the document 
<lexelt item="behaviour-n"> 


                     ^
संबंधित मुद्दे