我正在使用minidom解析xml文件,并且抛出一个错误,指出数据格式不正确。我发现有些页面有像ไà¸à¹€à¸Ÿà¸¥ &
这样的字符,导致解析器打嗝。在我开始解析之前,有没有简单的方法来清理文件?现在我正在使用正则表达式来丢弃任何不是字母数字字符和</>
字符的东西,但它不是很有效。在解析之前在Python中清理XML文件
1
A
回答
3
尝试
xmltext = re.sub(u"[^\x20-\x7f]+",u"",xmltext)
这将摆脱一切的除了0x20-0x7F范围。
如果您想保留控制字符,如制表符,换行符,您可以从\ x01开始。
xmltext = re.sub(u"[^\x01-\x7f]+",u"",xmltext)
1
-1
我把所有可以通过设置第8位(0x80)(128 .. 255分别为0x80 .. 0xff)来标识的非ASCII字符丢弃。
你可以在文件中读入一个名为Python字符串
old_str
然后连同
lambda
语句执行filter
电话:new_str = filter(lambda x: x in string.ascii_letters, old_str)
解析new_str
M有任何方法可以完成从字符串中去除非ASCII字符。
0
如果确实需要用奇怪的字符数据,你可以,在短短剥夺他们代替,将它们转换为代码的XML解析器可以理解的。
你可以看看unicodedata包,特别是normalize方法。
我自己并没有使用它,所以我不能告诉你所有这些,但是如果你决定要转换并保存这些数据,那么你可以再次询问。
>>> import unicodedata
>>> unicodedata.normalize("NFKD" , u"ไภเฟล &")
u'a\u03001\u201ea\u0300 \u0327 a\u03001\u20aca\u0300 \u0327Y\u0308a\u0300 \u0327\xa5 &'
0
它看起来像你处理的数据与某种编码保存“好像”他们是ASCII。 XML文件通常应该是UTF8,并且SAX(由minidom使用的底层解析器)应该能够处理该文件,所以在处理链的该部分看起来有些问题。我不会专注于“清理”,而是首先尝试确保编码是正确的并且被正确识别。也许是一个破碎的XML指令?你可以编辑你的Q来显示文件的前几行,特别是<?xml ...
指令的开头?
相关问题
- 1. 在PYTHON中解析rss xml文件
- 2. 在解析之前删除XML文件中的内容
- 3. 如何在python中使用minidom解析器解析xml文件
- 4. 解析XML文件LXML在Python
- 5. 如何在使用HTML解析HTML之前清理HTML单元
- 6. 的Python解析XML文件
- 7. XML在python解析
- 8. 在Python中解析XML
- 9. 在Python中解析XML
- 10. 在退出之前在node.js中清理
- 11. Python - 从XML中解析单行文件
- 12. 如何解析python中的xml文件?
- 13. 如何在清漆中解析xml
- 14. WordPress在解析之前解析wp_posts.post_content?
- 15. 错误解析XML:在activity_main xml文件绑定前缀
- 16. 解析文件在Python
- 17. 在python解析文件
- 18. 在iOS5之前解析JSON
- 19. 如何在PHP中解析XML文件
- 20. 如何在java中解析xml文件?
- 21. 如何在PHP中解析XML文件?
- 22. 在android中读取xml文件 - 解析
- 23. 在android中解析xml文件
- 24. 在java中解析这个xml文件
- 25. 在Jar中解析XML文件
- 26. 在Unity C中解析XML文件#
- 27. 在.NET中解析xml歌曲文件
- 28. 如何在Lua中解析xml文件?
- 29. 在Android中解析本地XML文件
- 30. 在.NET中解析XML文件
这个答案在潜水艇里剥洋葱(http://joelonsoftware.com/articles/Unicode.html)或我错过了一些东西吗? – mcepl 2011-12-06 08:21:01
@mcepl。你是正确的 - 这只适用于非UNICODE字符,因此不是一个通用的答案。 – Robert 2011-12-09 13:08:50