使用带有len()的range函数在python中从xml文件打印行和列

2024-10-16 17:23:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有1000多行是通过python中的xml文件导入的,我想从第一行开始,每第二行从三个选定的选项卡/列打印到第20行,但我不知道如何将range函数放入xml文件的print函数中。请参见下面的示例代码:

##使用元素树导入xml文件

import xml.etree.ElementTree as ET

xmlFile = "FilePath/DataName.xml"
tree = ET.parse(xmlFile)
root = tree.getroot()

try: import xml.etree.ElementTree as ET
except ImportError:
    print('An error occurred trying to read the file.')

print(root[0].tag)

###示例1##########

for x in root.findall('Root'):
    tag1 =x.find('tag1').text
    tag4 = x.find('tag4').text
    tag5 = x.find('tag5').text
    selectedrows = [tag1, tag4, tag5]
    for i in range(0, len(selectedrows)):
        print(selectedrows[i])

###例2###我可以每隔一行打印一次,但不能输入最大值。如果我输入(0,19,2)作为len()的范围,我会得到一个错误

print(root[0].tag)

for x in root.findall('root'):
    tag1 =x.find('tag1').text
    tag4 = x.find('tag4').text
    tag5 = x.find('tag5').text
    selectedrows = [tag1, tag4, tag5]
    for i in range(0, len(selectedrows), 2):
        print(selectedrows[i])

###上述代码打印所选列/标记,但如何将范围(0、19、2)包含到上述范围函数中。我已经阅读了许多使用范围(0,len(??)函数在线打印文本的教程,但没有一个详细介绍如何在打印时选择行和列。甚至有可能做到这一点吗?还是应该另存为CSV并创建阵列


Tags: 文件函数textinforlenrangeroot
1条回答
网友
1楼 · 发布于 2024-10-16 17:23:18

在代码中selectedrows只为for x循环的每个迭代保存三个标记。如果我理解正确,您希望在xloop, append the three tags as one element of this list, and once you parsed your xml, print a subset ofselectedrows`的1之前初始化列表selectedrows。像这样的

selectedrows = []
for x in root.findall('root'):
    tag1 =x.find('tag1').text
    tag4 = x.find('tag4').text
    tag5 = x.find('tag5').text
    selectedrows.append([tag1, tag4, tag5])

# this will run after you have gone through your xml doc with selectedrows populated
for i in range(0, len(selectedrows), 2):
    print(selectedrows[i])

上述内容将每隔一行打印一次(不在第20行停止)。如果需要,可以将其修改为for i in range(0, 19, 2)。另外,如果您只需要前20行,那么您可能需要在20次迭代后停止for x循环

相关问题 更多 >