簡體   English   中英

將String轉換為float並將該float分配為字典中的值?

[英]Converting a String to a float and assigning that float as a value in a dictionary?

我有一個以'word'\\t'num'\\n作為字符串的文件。 我想將其轉換為字典,除了如何將'num'值轉換為浮點數之外,我已經做了,以便dict的格式為'{word:num},而num不是字符串而是一個浮點數。

到目前為止,這是我的腳本:

file_stream = open(infile)
file_list = file_stream.readlines()
dict_output = {}
for line in file_list:
    tmp = line.split()
    dict_output[tmp[0]] = float(tmp[1])

如果刪除float() ,腳本將運行良好,它將創建一個字典,其值作為字符串。 當我嘗試將字符串轉換為int時,出現錯誤消息:“ ValueError:無法將字符串轉換為float:stand”

您正在將值正確轉換為浮點數。

但是,您至少一行,其中不僅僅是行上的制表符,或者第二個值不是浮點數。 嘗試將代碼更改為:

key, value = line.rsplit('\t', 1)
try:
    dict_output[key] = float(value)
except ValueError:
    print 'Unexpected line: {!r}'.format(line)

這將僅在最后一個\\t制表符而不是任何空格上分割行。 這樣可以保留可能在一行上具有多個制表符的行,並假定只有最后一個值是浮點數。

如果仍然失敗,則代碼將打印出問題行,以向我們顯示我們可能需要解決的其他問題。

因為您的格式是: word'\\t'num'\\n所以單詞和num之間的是t (制表符)。 您應該從line.split()更改為`line.split('\\ t')。 因此,完整的代碼應為:

file_stream = open(infile)
file_list = file_stream.readlines()
dict_output = {}
for line in file_list:
    tmp = line.split('\t')
    dict_output[tmp[0]] = float(tmp[1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM