我有一点问题,希望有人可以帮助我。我在python中不是最好的。
我有一个" CSV"我必须操纵的文件。我希望你有3个问题可以提供帮助。
1:打印前两行
第一个我认为我已经完成了,我打印了前两行。
import csv
from pprint import pprint
data = open('iphonevsandroid.csv')
pprint (data.readlines(2))
f.close()
我得到的数据是这样的:
['week,iphone,android\n',
'2004-01-04 - 2004-01-10,0,0\n',
'2004-01-11 - 2004-01-17,0,0\n',
'2004-01-18 - 2004-01-24,0,0\n',
'2004-01-25 - 2004-01-31,0,0\n',
'2004-02-01 - 2004-02-07,0,0\n',
'2004-02-08 - 2004-02-14,0,0\n',
'2004-02-15 - 2004-02-21,0,0\n',
'2004-02-22 - 2004-02-28,0,0\n',
'2004-02-29 - 2004-03-06,0,0\n',
'2004-03-07 - 2004-03-13,0,0\n',
'2004-03-14 - 2004-03-20,0,0\n',
2:解析第一个字段以将其转换为单个日期对象(提示:使用datetime.strptime)。您可以选择这两个日期中的任何一个。
import csv
import datatime
data = open('iphonevsandroid.csv')
reader1 = csv.reader1(data)
for row in reader1:
print row[0]
这将打印我们需要的第一行,但如何获得1个日期?我必须稍后绘制它。
答案 0 :(得分:0)
我会使用string.split方法。
在您的情况下,您可以按' - '
进行拆分所以如果:
row = ['week,iphone,android\n',
'2004-01-04 - 2004-01-10,0,0\n',
'2004-01-11 - 2004-01-17,0,0\n',
'2004-01-18 - 2004-01-24,0,0\n',
'2004-01-25 - 2004-01-31,0,0\n',
'2004-02-01 - 2004-02-07,0,0\n',
'2004-02-08 - 2004-02-14,0,0\n',
'2004-02-15 - 2004-02-21,0,0\n',
'2004-02-22 - 2004-02-28,0,0\n',
'2004-02-29 - 2004-03-06,0,0\n',
'2004-03-07 - 2004-03-13,0,0\n',
'2004-03-14 - 2004-03-20,0,0\n']
我们可以将第一次值视为:
first_date_row = row[1]
Output: '2004-01-04 - 2004-01-10,0,0\n'
您会看到第一个日期与第二个日期分隔为“ - ”。
这样:
first_date = first_date_row.split(' - ')[0]
Output: '2004-01-04'
我们如何获得第二次约会?那么我们可以执行与第一个日期相似的过程,但是在第二个日期之后将第一个逗号作为分隔符。
因此:
second_date = first_date_row.split(' - ')[1].split(',')[0]
Output: '2004-01-10'
请注意,这些日期只是Python的文本,您需要将它们转换为日期对象。你可以在这种情况下使用:
first_date_formated = datetime.strptime(first_date, '%Y-%m-%d')
second_date_formated = datetime.strptime(second_date, '%Y-%m-%d')