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上找到)