Python UnicodeDecodeError:&x27;utf-8';编解码器可以';在6952位置对字节0xa0进行解码:起始字节无效
我在下面粘贴的代码有一个错误。我试图在论坛上寻找类似的问题,老实说,我确实找到了一些问题相同的问题。然而,其中一些还没有解决方案,而那些有解决方案的方案对我的案例不起作用(至少我不能让它起作用)。粘贴代码段,如下所示:Python UnicodeDecodeError:&x27;utf-8';编解码器可以';在6952位置对字节0xa0进行解码:起始字节无效,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我在下面粘贴的代码有一个错误。我试图在论坛上寻找类似的问题,老实说,我确实找到了一些问题相同的问题。然而,其中一些还没有解决方案,而那些有解决方案的方案对我的案例不起作用(至少我不能让它起作用)。粘贴代码段,如下所示: # coding: utf-8 # In[14]: import csv import datetime import re import codecs import requests import pandas as pd #import cufflinks as cf
# coding: utf-8
# In[14]:
import csv
import datetime
import re
import codecs
import requests
import pandas as pd
#import cufflinks as cf
from plotly.offline import init_notebook_mode, iplot
import numpy as np
def get_google_finance_intraday(ticker, period=60, days=20, exchange='NSE'):
# build url
url = 'https://finance.google.com/finance/getprices' + '?p={days}d&f=d,o,h,l,c,v&q={ticker}&i={period}&x={exchange}'.format(ticker=ticker,
period=period,
days=days,
exchange=exchange)
page = requests.get(url)
reader = csv.reader(codecs.iterdecode(page.content.splitlines(), "utf-8"))
columns = ['Open', 'High', 'Low', 'Close', 'Volume']
rows = []
times = []
for row in reader:
if re.match('^[a\d]', row[0]):
if row[0].startswith('a'):
start = datetime.datetime.fromtimestamp(int(row[0][1:]))
times.append(start)
else:
times.append(start+datetime.timedelta(seconds=period*int(row[0])))
rows.append(map(float, row[1:]))
if len(rows):
return pd.DataFrame(rows, index=pd.DatetimeIndex(times, name='Date'), columns=columns)
else:
return pd.DataFrame(rows, index=pd.DatetimeIndex(times, name='Date'))
i = 0
with open('1.0.Ticker_names -MasterCopy.csv') as csvfile:
csvreader = csv.reader(csvfile)
for row in csvreader:
symbol_name = row
symbol = "".join(map(str, symbol_name))
# input data
ticker = symbol
period = 60
days = 200
exchange = 'NSE'
df = get_google_finance_intraday(ticker, period=period, days=days)
ohlc_dict = {
'Open':'first',
'High':'max',
'Low':'min',
'Close': 'last',
'Volume': 'sum'
}
df = df.resample('60MIN',base=15).apply(ohlc_dict).dropna(how='any')
df['Name'] = ticker
df.to_csv(ticker+'.csv')
csv文件-1.0.Ticker_names-MasterCopy.csv在A列中只有股票名称,名称从单元格“A1”开始
我得到以下错误:
Traceback (most recent call last):
File "C:\Users\Lenovo\Downloads\0-Copy1.0.Final_Intraday Stock data_v0.1_22June2018 (2).py", line 80, in <module>
df = get_google_finance_intraday(ticker, period=period, days=days)
File "C:\Users\Lenovo\Downloads\0-Copy1.0.Final_Intraday Stock data_v0.1_22June2018 (2).py", line 54, in get_google_finance_intraday
for row in reader:
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python36\lib\codecs.py", line 1041, in iterdecode
output = decoder.decode(input)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python36\lib\codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 6952: invalid start byte
回溯(最近一次呼叫最后一次):
文件“C:\Users\Lenovo\Downloads\0-Copy1.0.Final\u盘中股票数据\u v0.1\u 2018年6月22日(2.py)”,第80行,在
df=获取\谷歌\金融\日内(股票代码,期间=期间,天数=天数)
文件“C:\Users\Lenovo\Downloads\0-Copy1.0.Final\u盘中股票数据\u v0.1\u 2018年6月22日(2.py)”,第54行,在get\u google\u finance\u盘中
对于读取器中的行:
文件“C:\Users\Lenovo\AppData\Local\Programs\Python\Python36\lib\codecs.py”,第1041行,在iterdecode中
输出=解码器。解码(输入)
文件“C:\Users\Lenovo\AppData\Local\Programs\Python\Python36\lib\codecs.py”,第321行,在decode中
(结果,消耗)=自身缓冲区解码(数据,自身错误,最终)
UnicodeDecodeError:“utf-8”编解码器无法解码位置6952中的字节0xa0:无效的开始字节
尝试将编码参数包含到_csv()?@Harikrishna-我对任何类型的编码或技术都是全新的。我不确定你的意思,但你是指_csv(ticker+'.csv',utf-8)?df.to _csv(ticker+'.csv',encoding='utf-8)@Harikrishna-我尝试过,但没有成功。还是一样的错误!您确定您的数据是utf-8编码的吗?尝试df.to_csv(f'{ticker}.csv',encoding='latin1')
(通常在windows上找到)