You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字符串转整数报错:时间格式字符串无法转换为int的问题求助

解决将带引号的时间字符串转换为整数时的ValueError问题

从你的错误信息和代码来看,问题出在internalTimestamp = int(row2[16])这一行——row2[16]对应的字符串是带双引号的时间格式("2018-05-23-13:54:56.594000"),既不是整数也不是可直接转换为整数的数字字符串,所以触发了ValueError。

我给你分两步解决这个问题:

1. 先处理CSV读取时的引号问题

你当前的CSV读取代码用了quotechar='|',但如果原始CSV里的时间字段是用双引号包裹的,这个配置不会自动去掉引号。建议把quotechar改成双引号,让csv.reader自动处理字段的引号:

with open(r"C:\PATH\3dm2.csv", newline='') as csvfile:
    sensor2 = csv.reader(csvfile, delimiter=',', quotechar='"')  # 把quotechar改为'"'

这样读取后的row2[16]就会变成干净的2018-05-23-13:54:56.594000,而不是带引号的字符串。

2. 将时间字符串转换为整数时间戳

接下来需要把这个时间字符串解析成datetime对象,再转换成整数形式的时间戳(秒或毫秒级,根据你的需求选择):
首先记得导入datetime模块:

import datetime

然后替换原来的internalTimestamp = int(row2[16])为:

# 解析时间字符串,格式要和你的字符串完全匹配
dt = datetime.datetime.strptime(row2[16], "%Y-%m-%d-%H:%M:%S.%f")
# 转换为毫秒级时间戳(如果需要秒级就去掉*1000)
internalTimestamp = int(dt.timestamp() * 1000)

额外提醒

如果你的时间字符串是UTC时区的,记得在解析后加上时区信息再转时间戳,避免本地时区影响结果:

from datetime import timezone
dt = datetime.datetime.strptime(row2[16], "%Y-%m-%d-%H:%M:%S.%f").replace(tzinfo=timezone.utc)
internalTimestamp = int(dt.timestamp() * 1000)

把这些修改应用到你的代码里,应该就能解决这个ValueError问题了。

内容的提问来源于stack exchange,提问作者JohnBigDick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:47:59