Python:如何从CSV获取工作日?

时间:2016-03-11 07:33:02

标签: python csv

我有一个包含各种列的CSV示例,我必须从给定的date列中提取工作日。样本如下所示:

Name,Birthdate,Age,Address
ABC,3-10-2016 11:00:00AM,21,XYZ Street 21 zone
BCD,3-11-2016 15:54:00PM,22,WXY Street 21/A, S zone
CDW,4-11-2015 21:09:00PM,22,ZYX Street 21Avenue, North Zone

我想阅读CSV并提取日期以确定给定日期列的工作日

到目前为止,我已经创建了一个代码来读取CSV并获得工作日,但我无法在任何其他CSV上实现它。

代码如下:

import csv
from datetime import datetime as dt
with open('date.csv', 'r') as f:
  f.readline()

  for line in f:
    date = dt.strptime(line.strip(), '%m-%d-%Y %H:%M:%S').strftime('%A')
    print date

请在这里帮助我,因为这是我学术研究的一部分。

注意:如果问题不明确,请告诉我。 :)

3 个答案:

答案 0 :(得分:4)

使用csv module读取CSV文件,然后解析一列。由于您有一个带标题的文件,因此最简单的方法是使用DictReader()方法:

import csv
from datetime import datetime


with open(filename, 'rb') as infile:
    reader = csv.DictReader(infile)
    for row in reader:
         birthdate = row['Birthdate']  # keys are named in the first row of your CSV
         birthdate = datetime.strptime(birthdate, '%m-%d-%Y %H:%M:%S')
         print birthdate.strftime('%A')

答案 1 :(得分:2)

使用您导入的csv库,如下所示:

from datetime import datetime as dt        
import csv

with open('date.csv', 'rb') as f_input:
    csv_input = csv.reader(f_input)
    header = next(csv_input)

    for row in csv_input:
        print dt.strptime(row[1], '%m-%d-%Y %H:%M:%S%p').strftime('%A')

这将打印:

Thursday
Friday
Saturday           

这会自动将csv文件中的每一行作为单元格列表读取。因此,在这种情况下,您可以使用row[1]访问第二列,并将其传递给strptime函数以获取星期几。

答案 2 :(得分:1)

试试这个:

import re
from datetime import datetime as dt

test_str = open('date.csv').read()
p = re.compile(ur'\w+,(\d+-\d+-\d+\s\d+:\d+:\d+\w{2})')
m = re.findall(p, test_str)
for i in m:
    print dt.strptime(i, '%m-%d-%Y %H:%M:%S%p').strftime('%A')

输入:

Name,Birthdate,Age,Address
ABC,3-10-2016 11:00:00AM,21,XYZ Street 21 zone
BCD,3-11-2016 15:54:00PM,22,WXY Street 21/A, S zone
CDW,4-11-2015 21:09:00PM,22,ZYX Street 21Avenue, North Zone

输出:

Thursday
Friday
Saturday