>>> f = "2.5"
>>> i = "9"
>>> ci = int(i)
>>> ci
9
>>> cf = float(f)
>>> cf
2.5
>>> g = "dsa"
>>> cg = float(g)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): dsa
>>> try:
... cg = float(g)
... except:
... print "g is not a float"
...
g is not a float
>>>
CSV文件中不存在这些文件。数据只是字符串。只有。没别的了。在
除了你在样本中看到的,什么都没有告诉你。示例后面的下一行可以是一个看起来与采样字符串完全不同的字符串。在
处理CSV文件的唯一方法是编写CSV处理应用程序,这些应用程序假定特定的数据类型并尝试转换。你不能“发现”很多关于CSV文件的信息。在
如果列1应该是日期,则必须查看字符串并计算出格式。它可以是任何东西。一个数字,一个典型的美国或欧洲格式的公历日期(无法知道1/1/10是美国还是欧洲)。在
如果列2应该是float,那么只能这样做。在
^{pr2}$如果列3应该是int,那么只能这样做。
如果CSV有浮点数字字符串,除了对每一行执行
float
之外,没有办法“发现”。如果某行失败,则有人未正确准备该文件。在由于您必须执行转换以查看转换是否可行,所以您也可以简单地处理行。它更简单,一次就可以得到结果。在
不要浪费时间分析数据。问问那些创造它的人,那里应该有什么东西。在
在解析日期时想到了Dateutil。在
对于整数和浮点数,您可以在try/except部分尝试强制转换
ast.literal_eval()
可以得到简单的。在相关问题 更多 >
编程相关推荐