【问题标题】:Why strptime() is not working in my for loop?为什么 strptime() 在我的 for 循环中不起作用?
【发布时间】:2017-05-17 10:26:12
【问题描述】:

我正在使用 python 从给定 csv 文件中的日期中提取日期。

这是我的代码:

import csv

filename = "no.csv"

fields = []             
rows = []              

with open(filename,'r') as csvfile:
  csvreader = csv.reader(csvfile)

  fields = csvreader.next()       
  for row in csvreader:          
    rows.append(row)

  for i in rows[0:2]:
      print i

  import datetime
  from datetime import timedelta
  import time

  d = datetime.datetime.strptime(rows[4][3],'\xa0%d/%m/%Y')
  print d.day 

  for j in range(len(rows)):
      d = datetime.datetime.strptime(rows[j][3],'\xa0%d/%m/%Y')
      print d.day

在我的输出中,strptime() 如果我使用rows[4][3] 提及 csv 文件中的日期,我会得到输出。但是,如果我在 for 循环中使用它,它会显示格式错误。

['', '', '(Time)', '', '', '', '', '', '']
['\xa0Nitric Oxide(NO)', '\xa000:00:00', '\xa000:14:00', '\xa001/01/2017', '120.1', '\xa0\xb5g/m\xb3', 'NA', 'NA', '']
1
Traceback (most recent call last):
  File "C:/Users/RAJESH/Desktop/csv stuff.py", line 26, in <module>
    d = datetime.datetime.strptime(rows[j][3],'\xa0%d/%m/%Y')
  File "C:\Python26\lib\_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data '' does not match format '\xa0%d/%m/%Y'

我不知道我错在哪里。

【问题讨论】:

  • 不要链接到代码图像。将代码发布在here,作为text
  • 也将您的错误消息发布为文本。

标签: python csv


【解决方案1】:

您应该在迭代时省略第一行,因为我认为它是该文件的标题,并且它不包含您在strptime 中提供的格式的日期:

for i in range(1, len(rows)):
    ...

在调用strptime之前,最好确保每次迭代的数据格式正确。

【讨论】:

  • 谢谢你我明白了。
猜你喜欢
  • 2022-08-19
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多