我编写了一个.txt文件,因为它是一个json文件。 里面有很多列表、数字、整数等,我需要从中找出所有的数字并返回其总和
{"e":[[{"e":86,"c":23,"a":{"a":[120,169,"green","red","orange"],"b":"red"},"g":"yellow","b":["yellow"],"d":"red","f":-19},{"e":-47,"a":[2iolet"},"c":"green","h":"orange","b":{"e":59,"a":"yellow","d":"green","c":47,"h":"red","b":"blue","g":"orange","f":["violet",43,168,78]},"g":"orange","f":[{"e":[82,-41,2,"red","violet","orange","yellow"],"c":"green","a":77,"g":"orange","b":147,"d":49,"f":"blue"},-1,142,136,[":41,"f":63},11,-20,{"e":[100,43,183],"a":"yellow","d":["orange","yellow","violet","yellow",143,162,-23,168,145,-33]}
这只是这个文件的一小部分
def list_dig(lst):
tmp_int = 0
for element in lst:
if type(element) == dict:
dict_dig(element)
elif type(element) == int:
tmp_int += element
elif type(element) == list:
list_dig(element)
return tmp_int
def dict_dig(dictionary):
tmp_int = 0
for key in dictionary:
if type(dictionary[key]) == list:
tmp_int += list_dig(dictionary[key])
elif type(dictionary[key]) == int:
tmp_int += dictionary[key]
elif type(dictionary[key]) == dict:
dict_dig(dictionary[key])
return tmp_int
with open('json_written.txt', 'r') as file:
counter = 0
tmp = file.read()
for i in tmp:
if type(i) == list:
counter += list_dig(i)
elif type(i) == dict:
counter += dict_dig(i)
elif type(i) == int:
counter += i
print(counter)
我写了一些类似的东西,但我肯定那是垃圾,因为它不断返回0作为计数器,我被卡住了。我怎样才能解决这个问题?也许我应该用熊猫,但如果是的话,怎么用呢? 谢谢你的回答
好的,我想我解决了一个问题
所以json文件编写不正确,所以我必须找到其他解决方案来计算该文件中所有整数的总和
我决定列出一个要替换的字符列表,将所有文件视为一个字符串,并替换x中所有不需要的字符,然后将其按x拆分并删除空字段。然后我将所有字段从字符串转换为整数,最后将它们全部相加
你看到我可以简化的东西了吗
使用
json
模块加载嵌套的dict,否则文本文件将不会被识别为dict或list,而只是一个字符串:现在可以使用带有
isinstance
的递归函数对所有整数求和:然后简单地打电话
相关问题 更多 >
编程相关推荐