我目前正在尝试将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)]
如何格式化代码以除去引号和空字段。 任何帮助将不胜感激。
答案 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个第一个元素。