2016-03-21 79 views
1

我在Python中調用google adwords api,然後將該數據記錄到CSV文件中,我正在處理的UnicodeDecode/EncodeError,我已經嘗試了一切無法理解它現在。UnicodeEncodeError:'ascii'編解碼器無法在位置61編碼字符' xf1':序號不在範圍內(128)

with open('adgroups.csv', 'w', newline='') as csvfile: 
    campaign_name = seed_keyword.title().encode('utf-8','ignore').decode() 
    kw_writer = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) 
    kw_writer.writerow(
     ["CAMPAIGN", "ADGROUP", "MAX BID", "KEYWORD", "MATCH TYPE", "AVERAGE CPC", "SEARCH VOLUME", "COMPETITION"]) 
    for ad_group in ad_group_list: 
     ad_group_name = ad_group['keyword'].title().encode('utf-8','ignore').decode() 
     try: 
      for keyword_data in ad_group['keyword_data_list']: 
       kw_writer.writerow(
        [campaign_name, ad_group_name, str(ad_group['rpc'] * 0.5).encode('utf-8','ignore').decode(), keyword_data['kw'].encode('utf-8','ignore').decode(), "BROAD", 
        str(keyword_data['cpc']).encode('utf-8','ignore').decode(), 
        str(keyword_data['search_volume']).encode('utf-8','ignore').decode(), str(keyword_data['competition']).encode('utf-8','ignore').decode()]) 
       kw_writer.writerow(
        [campaign_name, ad_group_name, str(ad_group['rpc'] * 0.5).encode('utf-8','ignore').decode(), keyword_data['kw'].encode('utf-8','ignore').decode(), "PHRASE", 
        "", 
        "", ""]) 
       kw_writer.writerow(
        [campaign_name, ad_group_name, str(ad_group['rpc'] * 0.5).encode('utf-8','ignore').decode(), keyword_data['kw'].encode('utf-8','ignore').decode(), "EXACT", 
        "", 
        "", ""]) 
     except UnicodeError as e: 
      print(e) 
      print(str(ad_group)) 
      raise 

File "/var/www/html/ARB-Automation/MultiProcessController.py", line 158, in perform_automation 
CSVCampaignSetup.get_in_kw_and_make_adgroups(seed_keyword, ad_group_bid_mapping, cluster_bid_dict) 
File "/var/www/html/ARB-Automation/CSVCampaignSetup.py", line 163, in get_in_kw_and_make_adgroups 
make_single_adgroup_csv(best_ad_group_data) 
File "/var/www/html/ARB-Automation/CSVCampaignSetup.py", line 222, in make_single_adgroup_csv 
str(keyword_data['search_volume']).encode('utf-8','ignore').decode(), str(keyword_data['competition']).encode('utf-8','ignore').decode()]) 

UnicodeEncodeError: 'ASCII' 編解碼器不能編碼字符 '\ XF1' 在位置61:在範圍序數不(128)

  1. 爲什麼我在首位時得到一個錯誤我提到'忽略'?
  2. 如何正確處理這個?

奇怪的事情 - 在線222堆棧跟蹤票據錯誤,這是一個「編碼」的錯誤,我的理解它試圖創建unicode字符串的一個字節表示。 需要編碼的行222上的數據是一個數字 - int或float!那麼如何在127位以下找到表示 - 因此'ascii'編碼問題呢?

另外,我記住了一個解決方案 - 而不是編碼('utf-8','忽略')如果我編碼('ascii','忽略'),它不應該解決問題嗎?問題是這是否是理想的解決方案?

我甚至打印了原始數據,我在解釋器中一步一步地運行這段代碼,然後我沒有得到任何錯誤。 請幫幫我。

+0

很難確定沒有更多的代碼,但是當您嘗試將unicode字符串打印到ascii文件或終端,或者您設法將默認編碼設置爲ascii而不是utf8時,可能會發生此錯誤。 –

+0

我正在嘗試寫入一個csv文件。 –

+0

如果您嘗試'str(keyword_data ['search_volume'])。encode('utf-8')'(也包含'keyword_data ['competition']'),但沒有任何'ignore'或'.decode ()'? –

回答

-1

請將python源文件名(路徑)非英文字符(在本例中爲ñ)更改爲英文字符[a-z0-9]和有效的操作系統文件名字符。 我使用pyscripter和我有這樣的問題。

相關問題