2017-06-14 90 views
0

我实际上编写了一个代码,其中一个我从网站上抓取表格,并导入到CSV文件中。我的问题是,我如何创建一个新的列,并把这个列中的每个单元格中的实际日期(有数据时)。与Python的csv的日期时间

这里是我的代码:

import urllib2 
from bs4 import BeautifulSoup 
import unicodecsv as csv 
import os 
import sys 
import io 
import time 
import datetime 

filename=r'output.csv' 

resultcsv=open(filename,"wb") 
output=csv.writer(resultcsv, delimiter=';',quotechar = '"', quoting=csv.QUOTE_NONNUMERIC, encoding='latin-1') 
header = ['Pénznem', 'Devizanév','Egység','Pénznem_Forintban', 'Dátum'] 
output.writerow(header) 

def make_soup(url): 
    thepage = urllib2.urlopen(url) 
    soupdata = BeautifulSoup(thepage, "html.parser") 
    return soupdata 

def to_2d(l,n): 
    return [l[i:i+n] for i in range(0, len(l), n)] 

soup=make_soup("https://www.mnb.hu/arfolyamok") 

datatable=[] 
for record in soup.findAll('tr'): 
    for data in record.findAll('td'): 
     datatable.append(data.text) 
maindatatable = to_2d(datatable, 4) 

output.writerows(maindatatable) 

resultcsv.close() 

print maindatatable 

在那里我把和我在我的日期代码改变,以获得正确的结果是什么?

now = time.strftime('%d-%m-%Y') 
ido = to_2d(now, 5) 
output.writerows(ido) 
+0

你打算数据“追加”,以现有的? –

+0

可能是的,因为我有4列,我从网站(它的表)刮,我想做一个5.列,在哪里我可以写在每一行的实际日期。 – tardos93

回答

1

添加到您的代码的末尾:

import pandas as pd 
df = pd.DataFrame(maindatatable) 
now = time.strftime('%d-%m-%Y') 
df['date'] = now 
df.columns = header 
df.to_csv(filename, sep=';', encoding='utf-8', index=False) 
+0

我收到此错误信息: “回溯(最近最后一次通话): 文件 “C:\ Python27 \ prohardver.py” 49行,在 df.to_csv( 'output2.csv',九月=” ;',encoding ='utf-8',index = False) to_csv中的文件“C:\ Python27 \ lib \ site-packages \ pandas \ core \ frame.py”,第1403行 formatter.save() 文件“C:\ Python27 \ lib \ site-packages \ pandas \ io \ formats \ format.py”,行1586,保存为 self._save() 文件“C:\ Python27 \ lib \ site-packages \ pandas \ io \ formats \ format.py“,第1673行, – tardos93

+0

in _save self._save_header() 文件”C:\ Python27 \ lib \ site-packages \ pandas \ io \ formats \ format.py“,第1641行,在_save中_header Writer.writerow(encoded_labels) Writer中的文件“C:\ Python27 \ lib \ site-packages \ pandas \ io \ common.py”,第527行 data = data.decode(“utf-8”) 文件“C:\ Python27 \ lib \ encodings \ utf_8.py”,第16行解码 返回codecs.utf_8_decode(input,errors,True) UnicodeDecodeError:'utf8'编解码器无法解码位置1中的字节0xe9:无效的连续字节“ – tardos93

+0

嗯,它对我来说在本地工作。尝试更改encoding ='utf-8'到encoding ='ISO-8859-1' – Stergios