这是我之前创建的代码。
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;
所以,我想知道如何解决这个问题。师傅能给我一些建议吗?非常感谢你!!
答案 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)`