![](/img/trans.png)
[英]Converting CSV information from str > float > int then assigning it to a value in a dictionary
[英]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.