Итак, у меня есть функция, которая берет CSV и преобразует его в словарь.

Код:

import io

opened_statcsv = io.StringIO('''"ID","HP","Attack","Defense","Speed"
6,78,84,78,100
146,90,100,90,90
643,100,120,100,90
''')

def read_stats_file(filename):
    sdb={}

    #opened_statcsv = open(filename, 'r')
    stat_string = opened_statcsv.readlines()

    for i in range(1,len(stat_string)):
        splitline=stat_string[i].replace("\n",'').split(',')

        sdb[splitline[0]] = splitline[1],splitline[2],splitline[3],splitline[4]
    print(sdb)

read_stats_file('stats_file2.csv')

В настоящее время я могу создать словарь с одной проблемой: вокруг каждого номера есть кавычки.

Например, мой вывод сейчас: {'6': ('78', '84', '78', '100'), '643': ('100', '120', '100', ' 90' ) }

Когда это должно быть: {6: (78, 84, 78, 100), 643: (100, 120, 100, 90)}

Есть ли способ преобразовать все эти значения в целые, прежде чем создавать словарь (поскольку после этого они становятся неизменяемыми кортежами)?

Мне не разрешено импортировать CSV или карту, поэтому рекомендуется избегать использования .strip или .replace.

0
ruckarucka 24 Апр 2017 в 11:52

2 ответа

Лучший ответ

Как также предлагается в комментарии, попробуйте:

for i in range(1,len(stat_string)):
    splitline=stat_string[i].replace("\n",'').split(',')

    sdb[int(splitline[0])) = ( int(splitline[1]),int(splitline[2]),int(splitline[3]),int(splitline[4] )
0
Claudio 24 Апр 2017 в 09:02

В этом случае я предложу функцию map

for i in range(1,len(stat_string)):
    splitline=map(int, stat_string[i].replace("\n",'').split(','))

    sdb[splitline[0]] = splitline[1],splitline[2],splitline[3],splitline[4]
1
ling7334 24 Апр 2017 в 08:58
43583675