【问题标题】:string to int - error字符串到 int - 错误
【发布时间】:2018-05-23 12:18:54
【问题描述】:

我有一个如下所示的字符串:

"2018-05-23-13:54:56.594000"

当我尝试将其转换为 int 时,它给了我一个错误:

ValueError: invalid literal for int() with base 10: '"2018-05-23-13:54:56.594000"'

代码:

output_file = open(r"C:\PATH\123.acc.bin", "wb")

with open(r"C:\PATH\00000007.csv", newline='') as csvfile:
    sensor = csv.reader(csvfile, delimiter=',', quotechar='|')

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

        for row, row2 in zip(sensor, sensor2):

            internalTimestamp  = int(row2[16])
            msInfile = (int(float(row2[12])*1000)) + (1523138400000+604800000)

            accX    = float(row[0])
            accY    = float(row[1])
            accZ    = float(row[2])
            roll    = float(row[3])
            pitch   = float(row[4])
            yaw     = float(row[5])

            accData2 = pack('f', accX)
            accData3 = pack('f', accY)
            accData4 = pack('f', accZ)
            accData5 = pack('f', roll)
            accData6 = pack('f', pitch)
            accData7 = pack('f', yaw)
            accData8 = pack('I', internalTimestamp)
            accData9 = pack('I', ValidData)
            accData10 = pack('q', msInfile)

            output_file.write(accData2)
            output_file.write(accData3)
            output_file.write(accData4)
            output_file.write(accData5)
            output_file.write(accData6)
            output_file.write(accData7)
            output_file.write(accData8)
            output_file.write(accData9)
            output_file.write(accData10)
            count += 1

这是我的代码,我将来自两个不同 csv 文件的数据打包到一个二进制文件中。

【问题讨论】:

  • 你有一个日期时间字符串,你想把它转换成什么?
  • 当您说要将其转换为 int 时,您的意思是您要将其转换为 unix 时间?
  • 我想打包成一个4字节大小的二进制文件
  • MCVE 将是internalTimestamp = int("2018-05-23-13:54:56.594000")

标签: python


【解决方案1】:

如果你想要你的日期时间为 unix 格式。

import datetime
import time
s = "2018-05-23-13:54:56.594000"

d = datetime.datetime.strptime(s, "%Y-%m-%d-%H:%M:%S.%f")
print(time.mktime(d.timetuple()))

输出:

1527063896.0

【讨论】:

    【解决方案2】:

    那个字符串不是以 10 为底的。 它有破折号和其他不在 base 10 系统中的字符。

    所以,python 无法将其转换为 int

    【讨论】:

      【解决方案3】:

      这是因为字符串中有非数字字符。要使int() 正确转换,您必须将其传递给仅包含数字字符的字符串。

      在传入字符串之前尝试使用.replace()方法替换字符串中的非数字字符。Here is some info on that method!

      此外,您可能希望将日期时间转换为整数表示。为此,check out this previous question!

      【讨论】:

        猜你喜欢
        • 2016-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-14
        • 1970-01-01
        • 2011-09-17
        • 1970-01-01
        相关资源
        最近更新 更多