Python 3.6在将某些字符串转换为tim时,获取错误“需要整数(get type str)”

2024-04-24 20:41:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个函数,它接受一行中的某列中包含一些原始数值数据,并将其转换为适当的分钟数(它是一个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)

Tags: csv字符串informancitydatetime格式
2条回答

首先,您的代码与报告的错误不一致:

datetime.datetime.fromtimestamp(i).strftime(form, 'minutes') # Conversion

以及

line 39, in duration_in_mins
datetime.datetime.fromtimestamp(i).strptime(form, 'minutes')
TypeError: an integer is required (got type str)

请注意strptimestrftime不同

然后,您应该使用错误拆分行,以了解究竟是什么函数导致了异常:

x = datetime.datetime.fromtimestamp(i)
x.strftime(form, 'minutes') # Conversion

您可能会看到错误来自^{},它需要一个整数时间戳参数而不是str

在某个时候将这个参数转换为int,一切都应该正常。

正如您所说,datetime.fromtimestamp()需要一个数字,但您给它一个字符串。Python有一种哲学,“面对模棱两可的情况,拒绝猜测的诱惑”,因此如果给函数一个错误类型的对象,它将抛出异常。

代码的其他问题:

  • strftime()方法只接受一个参数,但是 再传一次。

  • 还有,你是不是想把这些环套起来?每次你附加一个 值到duration将列表中的所有值转换为时间,并且 如果转换成功了,你就把结果扔掉了 把它保存在任何地方。

相关问题 更多 >