【发布时间】:2018-06-01 00:51:10
【问题描述】:
我编写了一个函数,该函数接收在其中一列中有一些原始数字数据的行,并将其转换为适当的分钟数(它是一个 csv 文件)。如果我需要与它们争吵,所有的列都被保存为字符串,因为字符串更容易。但是,当将一些数据转换为时间格式(再次以字符串形式)时,我得到了标题中描述的错误。我的函数如下所示:
def duration_in_mins(row, city):
duration = [] # Make an empty list
form = '%M.%S'
if city == 'X':
city_file = open('X.csv')
city_csv = csv.reader(city_file)
for row in city_csv:
duration.append(row[1]) # The column that contains the strings
for i in duration:
datetime.datetime.fromtimestamp(i).strftime(form, 'minutes') # Conversion
else:
return 'Error'
return duration
datetime.datetime.fromtimestamp(i).strftime(form, 'minutes') 行是我在运行duration_in_mins() 时根据回溯得到错误的地方。回溯是否告诉我先将字符串转换为数字然后再转换为时间? datetime不能直接把字符串转成时间吗?
duration_in_mins(5, 'X)
line 39, in duration_in_mins
datetime.datetime.fromtimestamp(i).strptime(form, 'minutes')
TypeError: an integer is required (got type str)
【问题讨论】:
-
显示错误和跟踪。
-
for row in city_csv:这看起来不对。你想在这里做什么? -
追加
duration列表以仅包含已读取的原始 csv 文件中的特定列[1]。这就是它应该做的...... -
datetime.fromtimestamp()需要一个数字参数。所以是的,如果i是一个字符串,你需要将它显式地转换为 int 或 float。