格式化csv文件

时间:2016-12-04 21:09:34

标签: python

我目前正在尝试将csv文件中的数字列表导入为元组,如下所示:

[(60,20),(100,55),(50,40),(20, 70),(95,85)])

def tuples(filename):
    import csv
    with open(filename) as csvfile:
        rdr = csv.reader(csvfile)
        next(rdr, None) 
        my_list = [tuple(filter(None, row)) for row in rdr]
        print(my_list)

tuples("tuple.csv")

但目前我的输出是: [(' 60',' 20'),(' 100',' 55'),(' 50' ,' 40'),(' 20',' 70',''),(' 95', ' 85&#39)]

如何格式化代码以除去引号和空字段。 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

使用列表推导(对于初学者来说更整洁但更难理解),迭代所有值并将每个元素转换为整数(如果存在)

my_list = [('60', '20'), ('100', '55'), ('50', '40'), ('20', '70', ' '), ('95', '85')]
my_formatted_list = [tuple(int(value) for value in _tuple if value.strip()) for _tuple in my_list]

答案 1 :(得分:0)

如果您希望这些值在整数列表中,那么

.c

这将输出[(60,20),(100,55),(50,40),(20,70),(95,85)])

如果你想单独输出值,你可以像这样循环遍历你的列表

intlist = []
for i in my_list:
    intlist += int (i)
print (intlist)

如果你想在一行上尝试类似的东西

for i in my_list:
    print (int (i))

答案 2 :(得分:0)

您可以list comprehension使用map()功能,如下所示:

my_list = [('60', '20'), ('100', '55'), ('50', '40'), ('20', '70', ' '), ('95', '85')]
[tuple(map(int, item[:2])) for item in my_list]
# Output: [(60, 20), (100, 55), (50, 40), (20, 70), (95, 85)]

<强>解释

map(int, item[:2])map()用于将函数int()应用于item[:2]的每个元素。

item[:2],仅使用tuple中每个my_list的2个第一个元素。