【发布时间】:2014-04-11 23:01:39
【问题描述】:
我正在尝试获取python中各种类型数据的长度:
if type(rowoutClipFC[fieldnum]) in (int, float, datetime.datetime):
lenrowoutClipFC = len(str(rowoutClipFC[fieldnum]))
else:
lenrowoutClipFC = len(rowoutClipFC[fieldnum])
目前我遇到的类型有 int(), float(), str(), str() with ascii characters, datetime.datetime。
我需要将 int()、float()、datetime.datetime 对象转换为 str(),以便获得长度,而我不需要使用 ascii 的 str() 和 str() 执行此操作。由于某种原因, datetime.datetime 没有通过第一个 if 语句的气味测试,所以它出错了。我不知道为什么不是......
错误返回:
lenrowoutClipFC = len(rowoutClipFC[fieldnum])
TypeError: object of type 'datetime.datetime' has no len()
所以,它正在转向 else 语句,这不是我所期望的......
编辑:
我期待的是这样的:
for row in arcpy.SearchCursor("Strategic_Land_Resource_Planning_Area"):
type(row.APPROVAL_DATE)
这会返回datetime.datetime
我从中提取数据的表中的字段是“日期”字段。所以,我猜它返回一个 datetime.datetime 类型......即使有人提到没有 datetime.datetime 类型这样的东西?
所以,我进一步测试:
import datetime
for row in arcpy.SearchCursor("Strategic_Land_Resource_Planning_Area"):
if type(row.APPROVAL_DATE) == datetime.datetime:
print 'Yes"
这会返回Yes
所以,我不确定为什么顶部的脚本不满足 if 条件....
我尝试使用 isinstance 获得相同的结果。在 if 语句中不满足。
【问题讨论】:
-
做
len(str(datetime.datetime...))。您无法获取class对象的长度。 -
对象的长度到底是什么意思?
[1]的长度应该是 1,它作为列表的长度,还是 3,如果你先将它转换为字符串,它的长度?
标签: python datetime string-length