2017-09-03 18 views
1

これは前に作成したコードです。 csv listをintに変換する方法は?

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'> 

のようなもので、プロットするために使用することはできないことがわかりました。そう

、私はそれは例外TypeErrorを示し、この問題

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) 

を解決するために、新しいコードを把握けど:だからint型()の引数は、文字列や数値ではなく、「リスト」でなければなりません

を、私はこの問題を解決する方法を知りたい。マスターは私にいくつかの提案を与えることができますか?どうもありがとうございます!!

+0

'B = [INT(E) b] ' – martijnn2008

+0

' book = [int(line.strip())for line in csv.reader(file)] 'は直接動作するはずです。 – FabienP

+0

'.strip()'は無意味ではありませんか? – martijnn2008

答えて

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を使用して最後のファイル)

+0

それは動作します!ありがとうございました^ _^ –

+0

@陳俊良私はあなたがどのようにこのプロットしたいのか分かりませんが、あなたのcsvから行ごとに結果を取得する必要はありませんか? – PRMoureu

0

あなたの出力でわかるように、bはリストのリストです。だから、BXは、あまりにもしていないint.Consequentlyリストになりますとき、あなたは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)` 
関連する問題