Получение TypeError с циклом, но не без [закрыто]Python

Программы на Python
Anonymous
Получение TypeError с циклом, но не без [закрыто]

Сообщение Anonymous »

Я пытаюсь заставить эти данные JSON печатать подсчет различных элементов от 0 до тех пор, пока они не закончатся, поскольку они будут разными для каждой сборки. У меня есть 2 разных кода. У меня есть код без цикла while, который не выдает мне ошибок и работает так, как id, но он не считает, он просто показывает первое значение, а затем у меня есть код с циклом while, который дает мне ошибка при попытке посчитать.
Нет кода цикла while:

Код: Выделить всё

import json
import xmltodict
import time

url = "https://pobb.in/DrX67Cqoz5cV/xml"
response = requests.get(url)

def xmlToJson():
with open ("build.xml", "w") as xml_file:
xml_file.write(response.text)

with open("build.xml") as xml_file:

data_dict = xmltodict.parse(xml_file.read())

json_data = json.dumps(data_dict)

with open("build.json", "w") as json_file:
json_file.write(json.dumps(json.loads(json_data), indent=4))

#xmlToJson()

def findUniques():
with open('build.json', "r") as f:

data = json.loads(f.read())

x=0

try:

#data = data['PathOfBuilding']['Items']['Item'][integer]['#text']
data = data['PathOfBuilding']['Items']['Item'][x]['#text']
print(data)

if "UNIQUE" in data:
print(f"Item Is Unique")
elif "RARE" in data:
print(f"Item Is Rare")

x+=1

except IndexError:
print("IndexError")
pass

findUniques()
Код цикла:

Код: Выделить всё

import json
import xmltodict
import time

url = "https://pobb.in/DrX67Cqoz5cV/xml"
response = requests.get(url)

def xmlToJson():
with open ("build.xml", "w") as xml_file:
xml_file.write(response.text)

with open("build.xml") as xml_file:

data_dict = xmltodict.parse(xml_file.read())

json_data = json.dumps(data_dict)

with open("build.json", "w") as json_file:
json_file.write(json.dumps(json.loads(json_data), indent=4))

#xmlToJson()

def findUniques():
with open('build.json', "r") as f:

data = json.loads(f.read())

x=0

while True:
try:

#data = data['PathOfBuilding']['Items']['Item'][integer]['#text']
data = data['PathOfBuilding']['Items']['Item'][x]['#text']
print(data)

if "UNIQUE" in data:
print(f"Item Is Unique")
elif "RARE" in data:
print(f"Item Is Rare")

x+=1

except IndexError:
print("IndexError")
break

findUniques()
Я получаю ошибку:

Код: Выделить всё

  File "g:\Coding\Python\2024\poetest\pobtest.py", line 50, in 
findUniques()
File "g:\Coding\Python\2024\poetest\pobtest.py", line 36, in findUniques
data = data['PathOfBuilding']['Items']['Item'][x]['#text']
~~~~^^^^^^^^^^^^^^^^^^
TypeError: string indices must be integers, not 'str'
Я пытался изменить способ подсчета, используя разные переменные или используя циклы for вместо циклов while, но кажется, что если я добавлю какой-либо цикл, я получу ошибку.
При необходимости может быть указан любой другой код/информация.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ot-without

Вернуться в «Python»