我使用python的csv文件阅读器来读取csv文件。我的代码如下:
with open(self.csv_file, 'rb') as csvfile:
data = list(csv.reader(csvfile, delimiter=';'))
除了我的csv文件的一列之外,一切正常。我有浮点数在1和-1之间的列(例如:0,34430203959)并且它完美地工作但我的一个列处理非常高的数字(例如:142266963436)。因为文件的单元格被格式化为"标准",我的CSV文件编号为142266963436,为142.266.963.436(如下图所示):
有问题。当我解析我的CSV文件时,他处理小数字没有问题,因为只有一个"。"但是当我用很多"解析高数字时。" python将它们解释为" float"并把"。"在第一个号码之后。
所以,而不是数字:
142266963436
我有号码:
1.42266963436
任何人都知道如何解决这个问题?
感谢您的帮助!
答案 0 :(得分:2)
您的CSV文件包含奇怪的内容;看起来您的所有z
列都受到了影响(截图中为ankle_pos.z
和toe_pos.z
)。如果您确定这些值是浮点数,那么您可以使用Python来“修复”这些值:
import csv
def repaired_float(c):
try:
return float(c)
except ValueError:
# interpret ddd.ddd.ddd.ddd as 0.ddddddddd instead
return float('.{}'.format(c.replace('.', ''))
with open(filename, 'rb') as infh:
reader = csv.reader(infh)
next(reader, None) # skip header row
for row in reader:
row = map(repaired_float, row)
# do something with row
如果您想将这些值解释为(大)整数,请将repaired_float()
中的最后两行替换为:
# interpret ddd.ddd.ddd.ddd as ddddddddd instead
return int(c.replace('.', ''))