0

私は辞書を次のように設定しています{'USA':( '123456'、 '456020832')、...}

キーは明らかに国であり、他の2つは面積(マイル)と人口です。面積と人口をintに変換するのに助けが必要です。(現在は文字列です)。

これは私が持っているものです:

def _demo_fileopenbox():        
msg  = "Pick A File!"
msg2 = "Select a country to learn more about!"
title = "Open files"
default="*.py"
f = fileopenbox(msg,title,default=default)
writeln("You chose to open file: %s" % f)    
countries = {}   
with open(f,'r') as handle:
    reader = csv.reader(handle, delimiter = '\t')  
    for row in reader:
        countries[row[0]] = (row[1].replace(',', ''), row[2].replace(',', '')) 
        #i have tried countries[row[0]] = int((row[1].replace(',', '')), int(row[2].replace(',', '')) ) with no luck 
    reply = choicebox(msg=msg2, choices= list(countries.keys()) )
    writeln(reply + "-\tArea: " + (countries[reply])[0] + "\tPopulation: " + (countries[reply])[1] )

ありがとう!変換に関してエラーが発生し続けるので、助けを求めていました

4

1 に答える 1

1

読むときは、コードを次のように変更します。

countries[row[0]] = int(row[1].replace(',', '')), int(row[2].replace(',', ''))

または、代わりに、後でそれを行う方法の例:

d = {'USA': ('123456', '456020832'), 'UK': ('12345', '9876544')}
for k, v in d.iteritems():
    d[k] = tuple(int(el) for el in v)
# {'UK': (12345, 9876544), 'USA': (123456, 456020832)}

あなたのデバッグValueError

コードを次のように変更します。

for row in reader:
    try:
        countries[row[0]] = int(row[1].replace(',', '')), int(row[2].replace(',', ''))
    except ValueError as e:
        print(row)

これにより、失敗している行がキャッチTypeErrorされ、コンソールに出力されます。次に、それらを見て、列が に正常に変換されない理由を判断できますint

于 2013-02-27T04:22:28.560 に答える