处理` ` 在 Python 中

Posted

技术标签:

【中文标题】处理` ` 在 Python 中【英文标题】:Handling `
` in Python 【发布时间】:2016-06-21 18:26:13 【问题描述】:

问题背景:

我有一个 XML 文件,我正在将其导入 BeautifulSoup 并进行解析。一个节点具有以下内容:

<DIAttribute name="ObjectDesc" value="Line1&#xD;&#xA;Line2&#xD;&#xA;Line3"/>

请注意,该值在文本中具有 &amp;#xD;&amp;#xA;。我知道这些是回车和换行的 XML 表示。

当我导入 BeautifulSoup 时,值会转换为以下内容:

<DIAttribute name="ObjectDesc" value="Line1
Line2
Line3"/>

您会注意到&amp;#xd;&amp;#xA; 被转换为换行符。

我的用例要求该值保持为原始值。知道如何让它留下来吗?还是转换回来?

源代码:

蟒蛇:(2.7.11)

from bs4 import BeautifulSoup #version 4.4.0
s = BeautifulSoup(open('test.xml'),'lxml-xml',from_encoding="ansi")
print s.DIAttribute

#XML file looks like 
'''
<?xml version="1.0" encoding="UTF-8" ?>
<DIAttribute name="ObjectDesc" value="Line1&#xD;&#xA;Line2&#xD;&#xA;Line3"/>
'''

Notepad++ 说源 XML 文件的编码是 ANSI。

我尝试过的事情:

我浏览了文档但没有成功。

第 3 行的变化:

print s.DIAttribute.prettify('ascii')
print s.DIAttribute.prettify('windows-1252')
print s.DIAttribute.prettify('ansi')
print s.DIAttribute.prettify('utf-8')
print s.DIAttribute['value'].replace('\r','&#xD;').replace('\n','&#xA;')  #This works, but it feels like a bandaid and will likely other problems will remain.

有什么想法吗?我感谢任何 cmets/建议。

【问题讨论】:

你可以在解析前用一些原始字符串替换它们,最后按原样处理。 【参考方案1】:

仅作记录,首先请勿正确处理&amp;#xa;实体的库:BeautifulSoup(data ,convertEntities=BeautifulSoup.html_ENTITIES)lxml.html.soupparser.unescapexml.sax.saxutils.unescape

这是有效的(在 Python 2.x 中):

import sys
import HTMLParser

## accept file name as argument, or read stdin if nothing passed
data = len(sys.argv) > 1 and open(sys.argv[1]).read() or sys.stdin.read()

parser = HTMLParser.HTMLParser()
print parser.unescape(data)

【讨论】:

以上是关于处理` ` 在 Python 中的主要内容,如果未能解决你的问题,请参考以下文章

Python 异常处理中的 esle

python中异常处理

在 python 中使用多处理优化大型数组的处理

python之异常处理

在Python中处理大型文件的最快方法

python的异常处理