gpt4 book ai didi

python - datetime.datetime 对象的 len()

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:32 24 4
gpt4 key购买 nike

我正在尝试获取python中各种类型数据的长度:

 if type(rowoutClipFC[fieldnum]) in (int, float, datetime.datetime):
lenrowoutClipFC = len(str(rowoutClipFC[fieldnum]))
else:
lenrowoutClipFC = len(rowoutClipFC[fieldnum])

到目前为止我遇到的类型是 int()、float()、str()、带 ascii 字符的 str()、datetime.datetime。

我需要将 int()、float()、datetime.datetime 对象转换为 str(),这样我就可以获得长度,而对于 str() 和 str() 以及 ascii,我不需要这样做。出于某种原因,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 语句中不满足。

最佳答案

因为datetime.datetime的类型不是'datetime',而是'type'。那是因为 datetime.datetime 是类,而不是类的实例。

例如

>>> import datetime

>>> type(datetime.datetime)
<type 'type'>

>>> type(datetime.datetime.now())
<type 'datetime.datetime'>

>>> type(int)
<type 'type'>
>>>

文档建议如果您要测试某物的类型,请使用 isinstance() 而不是 type()(引用 https://docs.python.org/2/library/functions.html#type)

试试这个:

field = rowoutClipFC[fieldnum]
if type(field) in (int, float) or isinstance(field, datetime.datetime):
lenrowoutClipFC = len(str(field))
else:
lenrowoutClipFC = len(field)

更简单的,你可以这样做:

field = rowoutClipFC[fieldnum]
lenrowoutClipFC = len(str(field))

关于python - datetime.datetime 对象的 len(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23023949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com