2016-06-22 7 views
1

このデータセットをtxt形式で開くだけです。txtファイルを開く、float()の無効なリテラル

400.,41.7693 
403.977686150861,42.68129270405837 
408.3434392432695,43.86688321933424 
412.61217560029104,45.59966935704514 
416.4928450157652,48.72324436844505 
420.9556148435605,51.64162102143182 
423.86611690516617,53.534005882352936 
427.0676691729323,56.2927838121295 
431.43342226534077,59.73555626994983 
435.31409168081495,60.85274733242134 
439.291777831676,64.52351796625626 
442.68736357021584,67.25949607843137 
446.56803298569,68.92388276333789 
450.73975260732476,71.29506379388965 
454.7174387581858,72.41225485636114 
458.21004123211253,73.68904464204286 
462.4787775891341,75.5130300501596 
466.6504972107689,76.72142038303693 
470.2401164200825,77.72461235750114 
473.73271889400917,78.63660506155951 
477.61338830948335,79.57139758321932 
481.9791414018918,80.64298901048792 

で開こうとし ...

with open('SunData.txt') as I: 
    data = I.read() 
data = data.split('\n') 
WaveData = [float(row.split()[0]) for row in data] 
IntData = [float(row.split()[1]) for row in data] 

私は、このエラーで戻ってる、

invalid literal for float(): 400.,41.7693 

は、どのように私はこのエラーを修正しますか?

+0

がゼロ400に追加する(すなわち400.0)これが唯一のケースであれば動作するはずです。そうでなければより創造的な解決策が必要です。 – nbryans

+1

有効なフロートの一部ではないコンマがあります。 'split'呼び出しをコンマで分割するように更新することもできます。 –

答えて

4

row.split(',')を使用すると、コンマで区切ります。引数を渡さないで.split()は空白でのみ分割されます。

0

これは本当に何もしていません:NP:

row.split() 

はおそらく、あなたは、あなたがtxtファイルを読みたい場合は、あなたがnumpyのライブラリやコマンドを使用することができます

row.split(',') 
0

を意味しました。 loadtxt()あなたがnumpyの配列を取得するので

次にあなたがプロセスの多くを行うことができます;)

import numpy as np 

reading = np.loadtxt("SunData.txt", delimiter=',', usecols=(0, 1), unpack=True) 

print reading 

enter image description here

ドキュメントがある:doc

+1

numpyは、この単純なユースケースではかなり残虐であるようですね。 –

+0

@ k-nutデータ読込み後のプロセスに依存する)少なくとも、彼は気が散らない配列を得て、多くのプロセスを作ることができる – Deadpool

+0

OPによって他の質問が与えられた場合、データはnumpy配列になります。データを読み込むためのnumpyは理にかなっています。 – Evert

1
for item in data.split('\n'): 
    floats = item.split(',') 
関連する問題