如何将csv列表转换为int?

时间:2017-09-03 12:28:05

标签: python csv

这是我之前创建的代码。

import sys,csv
from matplotlib import pyplot
from time import sleep
import numpy as ma
import pandas
import serial
file = open("C:/Users/rickchen/Desktop/MQTT1/testfile.csv")
book = csv.reader(file)
b=list(book)
print b
print type(b)

我发现结果就像那样

[['114', '119', '116', '118', '120', '118', '113', '118', '121', '122', '117', '114', '112', '114', '115', '120', '128', '128', '120', '112', '110', '117', '122', '118', '112', '113', '122', '120', '116', '114', '118', '117', '128', '132', '130', '112']]
<type 'list'> 

它的字符串,不能用于绘制。

所以,我找到了解决这个问题的新代码

import sys,csv
from matplotlib import pyplot
from time import sleep
import numpy as ma
import pandas
import serial
file = open("C:/Users/rickchen/Desktop/MQTT1/testfile.csv")
book = csv.reader(file)
b=list(book)
c=[]
for bx in b:
    c.append(int(bx))
print c
print type(c)

但是,它显示TypeError:int()参数必须是字符串或数字,而不是&#39; list&#39;

所以,我想知道如何解决这个问题。师傅能给我一些建议吗?非常感谢你!!

2 个答案:

答案 0 :(得分:0)

您的列表结果包含另一个列表,您需要迭代它们:

c = [int(val) for list1 in b for val in list1]

您的代码可以转换为:

with  open("C:/Users/rickchen/Desktop/MQTT1/testfile.csv") as file:
    book = csv.reader(file)
    c = [int(val) for list1 in book for val in list1]

print(c)

(使用with作为上下文管理器避免在最后关闭文件)

答案 1 :(得分:0)

正如我们在您的输出中所注意到的,b是列表的列表。所以当bx也是一个列表而不是int。因此,你必须只取b列表的第一个元素,我们的代码修改如下:

import sys,csv
from matplotlib import pyplot
from time import sleep
import numpy as ma
import pandas
import serial
file = open("C:/Users/rickchen/Desktop/MQTT1/testfile.csv")
book = csv.reader(file)
b=list(book)
c=[]
for bx in b[0]:
   c.append(int(bx))
print c
print type(c)`