将int / float从文件放入字典中

时间:2016-09-02 09:11:45

标签: python type-conversion

我喜欢将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? 或者我必须自己写点什么?

3 个答案:

答案 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            

它似乎工作正常......