我正在使用一个包含unix时间戳的.csv文件,并且试图将每个unix时间戳转换为datetime实例。
import csv
import datetime
def count(month, data):
month_count = 0
for row in data[1:]:
# print(type(row[2]),row[2]) # This is for review
float_num = float(row[2])
row[2] = datetime.datetime.fromtimestamp(float_num)
if row[2].month == month:
month_count += 1
return month_count
with open('askreddit_2015.csv') as file:
posts = list(csv.reader(file)) # posts is a list of lists
feb_count = count(2, posts)
aug_count = count(8, posts)
print(feb_count)
print(aug_count)
.csv文件的行[2]类似于
1433213314
1434205517
1443409636
1440188623
1440082910
运行原始代码时,我得到TypeError: float() argument must be a string or a number, not 'datetime.datetime'
,这很奇怪,因为row [2]中的所有数据最初都是字符串。为了检查问题出在哪里,我添加了该评论行,当我运行时,我得到了
<class 'str'> 1433213314
<class 'str'> 1434205517
<class 'str'> 1443409636
<class 'str'> 1440188623
<class 'str'> 1440082910
<class 'datetime.datetime'> 2015-06-01 19:48:34
使用TypeError: float() argument must be a string or a number, not 'datetime.datetime'
为什么我的代码为什么尝试将已经转换的row [2]值再次放回float()?迭代应该在那个时候完成吗?谢谢。
答案 0 :(得分:0)
您正在<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingRight="13dp"
android:paddingLeft="16dp"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:text="Homme"
android:drawableLeft="@drawable/male_gender_light"
android:gravity="center"
android:textAllCaps="false"
android:textColor="@color/hintColor"
android:textSize="16sp"
android:fontFamily="@font/gotham_rounded_regular"
android:background="@drawable/gender_button_light"/>
函数中修改原始数组。
您可以在尝试转换日期之前简单地检查包含日期的元素是否为字符串。
+=