在Python中去除空格和不可打印字符

0 投票
2 回答
774 浏览
提问于 2025-04-18 00:54

我正在使用 lxml 库的 etree 和 xpath 方法处理一个 xml 文件。我的代码是:

from lxml import etree
File="c:\file.xml"
doc=etree.parse(File)
alltext = doc.xpath('descendant-or-self::text()')
clump = "".join(alltext)
clump

我得到了以下输出:

             "'\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\t\n\t\n\t\t\n\t\t\t\n\t\t\t\tIntroduction\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\tAccessibility\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\tOpening eBooks\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\

我想从输出中去掉空格和所有的制表符,所以我用了另一段代码,但没有得到想要的结果。
这段代码是:

import string
filter(lambda x: x in string.printable, clump)

我只想从输出中提取出这段文字:“Introduction , Accessibilty , Opening eBooks”

2 个回答

0

你可以试试这个:

''.join(clump.split())

希望这能解决你的问题!为了更进一步,你可以使用 re 模块,我这里用的是 Sabuj 的代码:

>>> import re
>>> re.sub(r'[\n\t]+', ' ', clump.strip())
3

如果你不介意使用 regex(正则表达式)来处理的话:

import re
clump = re.sub(r'[\n\t]+', ' ', clump)

如果你想要去掉其他字符,只需要把那些字符放在 [] 里面就可以了。

撰写回答