gpt4 book ai didi

python - 如何将数据拆分到字典中?

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:12 25 4
gpt4 key购买 nike

我正在从 xml 文件中读取数据,我必须构建字典。 xml文件的数据为:

<?xml version="1.0" standalone="yes"?>
<University>
<Form>
<RNlength>10</RNlength>
<ROLLNUMBER>
0-0,A-1,A-2,0-3,0-4,A-5,A-6,A-7,0-8,0-9,
1-0,B-1,B-2,1-3,1-4,B-5,B-6,B-7,1-8,1-9,
2-0,C-1,C-2,2-3,2-4,C-5,C-6,C-7,2-8,2-9,
3-0,D-1,D-2,3-3,3-4,D-5,D-6,D-7,3-8,3-9,
4-0,E-1,E-2,4-3,4-4,E-5,E-6,E-7,4-8,4-9,
5-0,F-1,F-2,5-3,5-4,F-5,F-6,F-7,5-8,5-9,
6-0,G-1,G-2,6-3,6-4,G-5,G-6,G-7,6-8,6-9,
7-0,H-1,H-2,7-3,7-4,H-5,H-6,H-7,7-8,7-9,
8-0,I-1,I-2,8-3,8-4,I-5,I-6,I-7,8-8,8-9,
9-0,J-1,J-2,9-3,9-4,J-5,J-6,J-7,9-8,9-9,
K-1,K-2,K-5,K-6,K-7,L-1,L-2,L-5,L-6,L-7,
M-1,M-2,M-5,M-6,M-7,N-1,N-2,N-5,N-6,N-7,
O-1,O-2,O-5,O-6,O-7,P-1,P-2,P-5,P-6,P-7,
Q-1,Q-2,Q-5,Q-6,Q-7,R-1,R-2,R-5,R-6,R-7,
S-1,S-2,S-5,S-6,S-7,T-1,T-2,T-5,T-6,T-7,
U-1,U-2,U-5,U-6,U-7,V-1,V-2,V-5,V-6,V-7,
W-1,W-2,W-5,W-6,W-7,X-1,X-2,X-5,X-6,X-7,
Y-1,Y-2,Y-5,Y-6,Y-7,Z-1,Z-2,Z-5,Z-6,Z-7
</ROLLNUMBER>
</Form>
</University>

从上面的 .xml 文件中,我必须根据字符串的长度提取数据。通过提取“RollNUMBER”元素信息,我必须用逗号(,)分割数据。之后提取信息,其中“0-0”表示“-”之前表示标签,“-”之后表示列号。列的总数等于字符串的长度。对于给定的 .xml 数据,字典应该看起来像,

data = [
{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9},
{"0":"A","1":"B","2":"C","3":"D","4":"E","5":"F","6":"G",.......,"24":"Y","25":"Z"},
{"0":"A","1":"B","2":"C","3":"D","4":"E","5":"F","6":"G",.......,"24":"Y","25":"Z"},
{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9},
{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9},
{"0":"A","1":"B","2":"C","3":"D","4":"E","5":"F","6":"G",.......,"24":"Y","25":"Z"},
{"0":"A","1":"B","2":"C","3":"D","4":"E","5":"F","6":"G",.......,"24":"Y","25":"Z"},
{"0":"A","1":"B","2":"C","3":"D","4":"E","5":"F","6":"G",.......,"24":"Y","25":"Z"},
{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9},
{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}
]

其中,字典的键是值的索引。我实现了它,但我不知道如何以字典格式提取数据。

from xml.dom import minidom
xmldoc = minidom.parse('demo.xml')
itemlist = xmldoc.getElementsByTagName('ROLLNUMBER')
pattern = itemlist[0].firstChild.nodeValue

l = [x.strip() for x in pattern.split(',')]

最佳答案

请注意,您的预期输出应为"25": "Z",因为 A 是从 0 开始索引的

然后,您可以通过再次拆分 token 并将第二部分转换为整数来实现此目的。这里的内部循环确保列号在使用之前包含字典。

l = []
for x in pattern.split(','):
x2 = x.split('-')
label = x2[0]
col = int(x2[1])
while len(l) < col + 1:
l.append({})
l[col][str(len(l[col].keys()))] = label

现场测试: https://repl.it/IMoU/1

关于python - 如何将数据拆分到字典中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44132131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com