問題点
- readlines() を使うと、改行コード付きで、str 型のリストになる。
with open('data.txt') as f:
lines = f.readlines()
print(lines)
['1.251263774754871605e+00\n', '7.503633722639080350e-01\n', '4.139008952824855037e+00\n', '1.250721582201961279e+00\n', '2.295065133001095159e-01\n', '3.376055655199706962e+00\n', '2.259014670510021361e+00\n', '8.938591195678956325e+00\n', '1.367308117088905650e+00\n', '2.260566098839629223e+00\n']
- round() は近い整数に丸める関数なので、切り捨ての場合は int() を使う。
a = 4.6
print(type(a), a) # <class 'float'> 4.6
# 近い整数に丸め
b = round(a)
print(type(b), b) # <class 'int'> 5
# 切り捨て
c = int(a)
print(type(c), c) # <class 'int'> 4
サンプルコード
全部の値を int で読み込みたい場合
python
1with open('data.txt') as f:
2 lines = [int(float(v)) for v in f.read().splitlines()]
3 print(lines)
[1, 0, 4, 1, 0, 3, 2, 8, 1, 2]
numpy を使うと楽です。
python
1import numpy as np
2
3a = np.loadtxt('data.txt').astype(int)
4print(a) # [1 0 4 1 0 3 2 8 1 2]