python中报出lxml怎么改_在python lxml prettyprint中更改标签间距 - python

在Python中使用lxml库创建格式化的XML文档时,默认的制表符缩进为2个空格。要将缩进改为4个空格,可以通过自定义函数实现。示例代码提供了一个转换方法,通过遍历XML字符串并替换2个空格为1个制表符来达到目的。然而,这种方法效率不高,理想的解决方案需要在lxml C代码级别实现。
摘要由CSDN通过智能技术生成

我有一个小的脚本,可以创建xml文档,并使用prettyprint=true可以创建格式正确的xml文档。但是,制表符的缩进是2个空格,我想知道是否有办法将其更改为4个空格(我认为4个空格看起来更好)。有没有简单的方法来实现这一目标?

程式码片段:

doc = lxml.etree.SubElement(root, 'dependencies')

for depen in dependency_list:

dependency = lxml.etree.SubElement(doc, 'dependency')

lxml.etree.SubElement(dependency, 'groupId').text = depen.group_id

lxml.etree.SubElement(dependency, 'artifactId').text = depen.artifact_id

lxml.etree.SubElement(dependency, 'version').text = depen.version

if depen.scope == 'provided' or depen.scope == 'test':

lxml.etree.SubElement(dependency, 'scope').text = depen.scope

exclusions = lxml.etree.SubElement(dependency, 'exclusions')

exclusion = lxml.etree.SubElement(exclusions, 'exclusion')

lxml.etree.SubElement(exclusion, 'groupId').text = '*'

lxml.etree.SubElement(exclusion, 'artifactId').text = '*'

tree.write('explicit-pom.xml' , pretty_print=True)

python大神给出的解决方案

python lxml API似乎无法做到这一点。

制表符间距的可能解决方案是:

def prettyPrint(someRootNode):

lines = lxml.etree.tostring(someRootNode, encoding="utf-8", pretty_print=True).decode("utf-8").split("\n")

for i in range(len(lines)):

line = lines[i]

outLine = ""

for j in range(0, len(line), 2):

if line[j:j + 2] == " ":

outLine += "\t"

else:

outLine += line[j:]

break

lines[i] = outLine

return "\n".join(lines)

请注意,这不是很有效。只有在lxml C代码中本地实现此功能时,才能实现高效率。

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…Python:同时在for循环中添加到列表列表 - python

我想用for循环外的0索引值创建一个新列表,然后使用for循环添加到相同的列表。我的玩具示例是:import random data = ['t1', 't2', 't3'] masterlist = [['col1', 'animal1', 'an…在Python中迭代OrderedDict - python

我有以下OrderedDict:OrderedDict([('r', 1), ('s', 1), ('a', 1), ('n', 1), ('y', 1)]) 实际上,这表示单词中字母的出现频率。第一步-我将使用最后两个元素来创建一个这样的联合元组; pair…如何在Matplotlib条形图后面绘制网格线 - python

x = ['01-02', '02-02', '03-02', '04-02', '05-02'] y = [2, 2, 3, 7, 2] fig, ax = plt.subplots(1, 1) ax.bar(range(len(y)), y, width=…在独立的scrapy脚本中使用自定义中间件 - python

我正在编写一个实现自定义下载器中间件的独立抓取脚本(update.py)。该脚本当前使用记录在here和here中的CrawlerProcess()API。看起来像这样:from scrapy.crawler import CrawlerProcess import scrapy class CustomMiddleware(object): .... cu…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值