Из того, что я вижу, когда вы находитесь внутри объекта карты (фигурные скобки), вы можете увидеть шаблон, который похож на объект json.
Решение, которое я собираюсь предложить следует использовать только в том случае, если файл с этой статистикой является небольшим файлом, в противном случае будет много дополнительной памяти.
Решение: прочитайте файл и создайте его в объект, у которого есть список и словарь для запросов.
def convert_file_into_object(file):
team_object = {}
team_name = ""
player_id = ""
for line in file.readlines():
line = line.replace('"', '').strip()
if "{" in line:
continue
if "}" in line:
if player_id:
player_id = ""
continue
if "team" in line: # team object starts so add a new dict with team name
team_name = line
team_object[team_name] = []
continue
if line.isnumeric(): # we have hit player id, so add new player in current team
player_id = line
team_object[team_name].append({player_id: {}})
continue
player_stats = line.split()
if len(player_stats) == 2 and team_name and player_id: # we have players stats
team_object[team_name][len(team_object[team_name]) - 1][player_id][player_stats[0]] = player_stats[1]
return team_object
with open("data.txt", "r") as file:
file_object = convert_file_into_object(file)
from pprint import pprint as pp
pp(file_object)
Я написал этот фрагмент кода на основе данных файла, которыми вы поделились. Код должен быть изменен, если файл имеет другую структуру.
Вывод в REPL при сохранении вышеуказанного кода в модуле robo.py.
gaurishankarbadola@ubuntu:~/python_path$ python robo.py
{'team1': [{'76561628991367478': {'1kill_rounds': '4',
'damage': '415',
'deaths': '3',
'firstdeath_ct': '2',
'firstkill_ct': '1',
'headshot_kills': '2',
'kills': '4',
'roundsplayed': '7'}},
{'7655212110096592': {'1kill_rounds': '1',
'2kill_rounds': '1',
'3kill_rounds': '1',
'assists': '1',
'damage': '672',
'deaths': '2',
'firstdeath_ct': '1',
'firstkill_ct': '1',
'headshot_kills': '3',
'kills': '6',
'name': 'payperview',
'roundsplayed': '7'}},
{'76561198821291593': {'1kill_rounds': '1',
'3kill_rounds': '1',
'assists': '1',
'damage': '458',
'deaths': '3',
'firstdeath_ct': '1',
'firstkill_ct': '2',
'headshot_kills': '2',
'kills': '4',
'name': 'dog',
'roundsplayed': '7'}},
{'76561668131605879': {'1kill_rounds': '5',
'2kill_rounds': '1',
'bomb_defuses': '1',
'damage': '640',
'firstkill_ct': '1',
'headshot_kills': '1',
'kills': '7',
'name': 'Cat',
'roundsplayed': '7',
'tradekill': '1'}},
{'76566648819479703': {'1kill_rounds': '1',
'2kill_rounds': '1',
'3kill_rounds': '2',
'assists': '1',
'bomb_defuses': '1',
'damage': '801',
'deaths': '1',
'firstkill_ct': '1',
'headshot_kills': '3',
'kills': '9',
'name': 'BackAndImBetter',
'roundsplayed': '7'}}],
'team2': [{'76561198120865213': {'1kill_rounds': '1',
'damage': '231',
'deaths': '6',
'firstdeath_t': '2',
'headshot_kills': '1',
'kills': '1',
'name': 'Squid',
'roundsplayed': '7'}},
{'76561198355321210': {'1kill_rounds': '1',
'damage': '106',
'deaths': '6',
'firstdeath_t': '1',
'kills': '1',
'roundsplayed': '7'}},
{'76561197963353523': {'1kill_rounds': '1',
'2kill_rounds': '1',
'assists': '1',
'bomb_plants': '2',
'damage': '630',
'deaths': '6',
'firstdeath_t': '1',
'firstkill_t': '1',
'kills': '3',
'name': 'Bravo',
'roundsplayed': '7'}},
{'76561198111573735': {'1kill_rounds': '1',
'2kill_rounds': '1',
'damage': '255',
'deaths': '6',
'firstdeath_t': '2',
'firstkill_t': '2',
'headshot_kills': '1',
'kills': '3',
'name': 'Manager',
'roundsplayed': '7'}},
{'76561198853686342': {'1kill_rounds': '1',
'assists': '1',
'damage': '282',
'deaths': '6',
'firstkill_t': '1',
'headshot_kills': '1',
'kills': '1',
'name': 'Compliment',
'roundsplayed': '7'}}]}
Когда у вас есть объект, вы можете запросить его соответственно.