我喜欢将csv文件中的一些值放入dict中。一个例子是:
TYPE, Weldline
Diam, 5.0
Num of Elems, 4
我在阅读字典(以后在API中使用)后最终得到:
{'TYPE':'Weldline' , 'Diam':'5.0','Num of Elems':'4'}
由于API要求字典我提供了所有必要的关键字,如'TYPE','Diam',......根据API文档。
我遇到的问题是,API需要Diam
的浮点数和Num of Elems
的整数
由于我有大量条目:是否有一种简单的自动方式将字符串转换为float或int? 或者我必须自己写点什么?
答案 0 :(得分:1)
您可以使用my @words_in_first_line = @{$lines{'1'}};
my @words_in_third_line = @{$lines{'3'}};
my @intersection = List::Compare->new(\@words_in_first_line, \@words_in_third_line)->get_intersection;
print @intersection;
这可以用于安全地评估包含来自不受信任来源的Python值的字符串,而无需自己解析值。它无法评估任意复杂的表达式,例如涉及运算符或索引。
literal_eval
答案 1 :(得分:0)
同样试试看起来更简单。
import csv,ast
with open('file.csv', mode='r') as file:
reader = csv.reader(file)
mydict = {rows[0]:ast.literal_eval(rows[1]) for rows in reader}
print mydict
答案 2 :(得分:0)
现在我尝试了这个:
key = Line[0].strip()
value = Line[1].strip()
try:
value = int(Line[1].strip())
except ValueError:
try:
value = float(Line[1].strip())
except ValueError:
value = Line[1].strip()
Entry[key]=value
它似乎工作正常......