【问题标题】:python batch change csv datepython批量更改csv日期
【发布时间】:2016-11-16 20:02:41
【问题描述】:

我正在尝试批量更改 csv 文件中的日期列值,同时还删除字符串的前导部分。当前格式为,例如“Company Name Here Oct 2 2016 9:43PM”。我需要 ISO 格式的日期,例如“20161021502”。

我一直在从 csv 文件中拆分对象,收到此错误:

Traceback (most recent call last):
  File   "C:\Users\dave\AppData\Local\Programs\Python\Python35\Scripts\dealerTestData.py", line 13, in <module>
month, day, year, time = newDate.split()

ValueError: 没有足够的值来解包(预期 4,得到 2)

到目前为止,我的代码如下所示:

dealerFile =  open('C:/Users/dave/Downloads/Prospect_Source_Measurement_Details-    2016112.csv')
dealerReader = csv.reader(dealerFile)
dealerData = list(dealerReader)
dealerData


for index in dealerData:
    newDate = (index[0])[-19:]
    totalDate = repr(newDate)

    month, day, year, time = newDate.split()

    time = datetime.strptime(time, '%I:%M%p')
    month = datetime.strptime(month, '%b')
    totalDate = year + month.strftime('%m') + day + time.strftime('%H%M')
    print(newDate)

如果我注释掉 newDate = index[0][-19:] 之后的所有内容,则可以打印出整列减去公司名称。一旦我尝试将其表示为字符串并对其进行解析,就会出现错误。

【问题讨论】:

  • 打印newDate 看看你会得到什么。它似乎只有两个元素,但您尝试分配给四个变量。
  • 实际上 20161021502 并不是一个有效的 ISO 8601 日期。您缺少T 分隔符:2016102T1502

标签: python csv


【解决方案1】:

找到了答案。读取文件时,有 5 个标题行与文件正文的解析方式不同。删除它们后,逻辑是合理的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 2017-10-18
    相关资源
    最近更新 更多