玩Python遇到的問題一二三及解決辦法

文章目錄

  • 問題一:python 2.7版本解決TypeError: 'encoding' is an invalid keyword argument for this function。
  • 問題二:python讀取文件時提示"UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multibyte sequence"
    • 情景一:
    • 情景二:
  • 問題三:python執行SQL報錯:not enough arguments for format string
  • 問題四:輸出的信息為轉義碼
  • 問題五:使用list的clear()方法時的注意點
  • 問題六:Python下調用json.dumps中文顯示問題解決辦法
  • 問題七:報錯:pymysql.err.OperationalError: (1040, 'Too many connections')
  • 問題八:ValueError: invalid literal for int() with base 10: “”
  • 問題九:解決python中TypeError: not enough arguments for format string
  • 問題十:消除python中控制臺輸出的警告信息
    • 問題十一:報錯:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

最近要頻繁的玩Python,在這里總結下遇到的一些問題,持續更新中。

問題一:python 2.7版本解決TypeError: ‘encoding’ is an invalid keyword argument for this function。

用Python2.7來打開一些文件的時候,經常出現以上的所表示的問題,如

data_file = open("F:\\MyPro\\data.yaml", "r", encoding='utf-8')

運行的時候報錯:TypeError: ‘encoding’ is an invalid keyword argument for this function。但在Py3中運行卻不會遇到這樣的問題
解決辦法:網上查找一番后,改成如下這樣就可以搞定

import io
data_file = io.open("F:\\MyPro\\data.yaml", "r", encoding='utf-8')

至于原因根據報錯的信息看也許跟Py2和Py3的API規定不同有關吧。

問題二:python讀取文件時提示"UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 205: illegal multibyte sequence"

情景一:

同樣是讀取文件時,碰到的編碼問題。
解決辦法:

FILE_OBJECT= open('order.log','r', encoding='UTF-8')

只需要加入對應的encoding參數就OK了,對于Python中的編碼問題,有時候也很麻煩。不過這類問題一般百度下就能找到對應的解決辦法。

情景二:

突然在用pandas讀取別人的.csv數據的時候出現了一種奇怪現象:用Python2的解釋器時可以讀取,用python3的解釋器卻無法讀取。報上面的錯誤,后來在方法中添加encoding參數依舊不可行,之后查閱資料才知道,原來是.csv文件本事的格式問題,首先確保你的.csv是utf8編碼(用notepad打開.csv文件查看文件編碼格式),其次要確保你的.csv在保存的時候也是.csv utf-8格式(可以再重新打開.csv文件再保存為.csv utf-8格式),如下圖所示:
在這里插入圖片描述

問題三:python執行SQL報錯:not enough arguments for format string

在Python中執行SQL的查詢語句的時候爆出這樣的錯誤,如
sql='select * from Teacher where Tname like \'%%'+ keyword +'%%\''。后來才知道出現這類問題,主要是字符串中包含了%號,python 認為它是轉移符,而實際我們需要的就是%, 這個時候,可以使用%%來表示%,也就是說sql字符串中的百分號全都要用%%來表示。

問題四:輸出的信息為轉義碼

# ((u'01', u'\u5f20\u4e09'), (u'04', u'\u5f20\u4e09\u4e30')) # (u'01', u'\u5f20\u4e09')

這種情況也只有在Py2中才會出現,Py3中是不會出現的。
解決辦法:將輸出的轉義碼通過以下的eval方法轉化為對應的中文。

 print(eval("u"+"\'"+exmple[1]+"\'"))

問題五:使用list的clear()方法時的注意點

最近在寫一段如下代碼時:

for line in lines:# print(line)for x in jieba.lcut(line):# print(x)if x not in stopwords:text1.append(x)text2=text1corpora_documents.append(text2)# print(corpora_documents)text1.clear()

這里由于類型轉化問題不能采用簡便的方法來直接分詞并剔除停詞,所以只能用這種方式來實現相同的功能,但是在實現的過程中,原本期望返回的corpora_documents是下圖所示的效果:
這里寫圖片描述
但是卻得到了一組空的List。這讓博主很是郁悶(畢竟博主之前是寫Java的,面相對象的思想“根深蒂固”,以為聲明出來一個新的text2對象,就會開辟一塊新的內存空間來存儲text2的內容,這樣text1和text2也就是值傳遞了而非引用傳遞,可是這是java的內存加載機制。。。),不過后來隨著博主無意間將最后一行代碼改為:

text1=[]

得到了自己想要的結果,之后再分析原因的時候,發現博主沒有切換到Python的內存管理機制。其實整個過程對于Python來說內存管理如下:

for line in lines:# print(line)for x in jieba.lcut(line):# print(x)if x not in stopwords:text1.append(x)text2=text1#相當于將聲明的兩個對象的指針指向同一塊內存空間即text1所在的內存空間corpora_documents.append(text2)#Python采用的應該是延遲加載,也就是說這里corpora_documents只是將指針指向了text2的內存地址,并沒有直接就將text2里面的內容加載進來。# print(corpora_documents)text1.clear()#clear()就相當于擦除了text1中的內容,即text2指向了一個空的內容,由于Python延遲加載的特性也就造成了后面打印出來的corpora_documents的內容為空print(corpora_documents)

所以在使用clear()的時候一定要注意對象之間的關系,一不留神就會造成很大的損失。感覺這個問題好像在那本書中有提到,還得復習下基礎知識,很多問題只有不斷的Coding才能碰到,還是實踐太少,仍需繼續努力。

問題六:Python下調用json.dumps中文顯示問題解決辦法

最近在開發某個功能的時候,需要將前臺的信息返回到后天處理后,以json字符串的形式返回,但是返回的內容顯示在網頁中確實ASCII碼值,下面是這個問題的解決辦法:
配置下dumps方法中的ensure_ascii這個屬性!

data={"url":"http:www.dianwe.com","content":"采集Test","CreateTime":"2014-07-08 23:29"}  
bizResult= json.dumps(data, ensure_ascii=False)   
print(bizResult)  

這樣便不會轉為Ascii 編號了!

問題七:報錯:pymysql.err.OperationalError: (1040, ‘Too many connections’)

mysql數據庫 Too many connections
出現這種錯誤明顯就是 mysql_connect 之后忘記 mysql_close;我的情況是實現了自動更新本地數據庫在測試的時候每次更新后又忘記關閉對應的connect,當大量的connect之后,就會出現Too many connections的錯誤,mysql默認的連接為100個。只需在代碼中添加對應的connect.close()方法即可。

問題八:ValueError: invalid literal for int() with base 10: “”

最近在寫代碼的時候,突然爆出這樣錯誤,根據字面意思是類型轉化的問題,但是仔細檢查了代碼,發現類型轉化沒有問題。無奈只能去求助度娘,很多博客也說是類型轉換的問題。以下是某博客的一個實驗:

>>> int('')
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: ''
>>>>>> int("x")
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'x'

從中可以看出這類錯誤就是字符無法轉換為int型。但是仍找不到對應的錯誤的位置在哪里,剛好看看到一個建議:“為了避免類似錯誤,以后進行int類型轉換時,注意檢查,或者直接加try 捕獲下”

 # try:#     print(int(re.sub("\D", "", x)))# except ValueError:#     print("-"*40)#     print("異常值"+x)

一查竟讓多出了一些nan值:
在這里插入圖片描述
但是后來去和數據做比對的時候,實在是也沒有發現有什么nan值,這就很奇怪了,所以為了能讓程序跑下去,這里就先省去了這個int的強制變換。

問題九:解決python中TypeError: not enough arguments for format string

出現這類問題,主要是字符串中包含了%號,python 認為它是轉移符,而實際我們需要的就是%, 這個時候,可以使用%%來表示

問題十:消除python中控制臺輸出的警告信息

程序運行中經常會碰到python控制臺顯示警告提示SettingWithCopyWarning的信息,一般來說沒什么大事,但是當這些信息多了之后就會干擾你查看一些關鍵信息的效率,那么如何讓控制臺不提示這類告警呢?很簡單只需在代碼中添加以下兩行代碼即可:

import warnings
warnings.filterwarnings("ignore")

問題十一:報錯:UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 0: ordinal not in range(128)

使用python2.x的時候,即使在代碼頭部聲明了encoding=“utf-8”,但是程序執行的時候仍會報這個錯誤,這時候只需要在頭部添加如下代碼即可

import sys
reload(sys)
sys.setdefaultencoding('utf8')

ps:python3.x一般就不會出現這種情況!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456582.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456582.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456582.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《MATLAB圖像處理超級學習手冊》導讀

前言 MATLAB圖像處理超級學習手冊圖像是人類獲取信息的重要來源。當今的信息化社會&#xff0c;對圖像處理和圖像分析的要求越來越高&#xff0c;現有的圖像軟件由于采購成本和功能的限制&#xff0c;已經不能完全滿足專業人士的需要&#xff0c;這時就需要專業人士來編寫自己的…

【python】SOCK_STREAM和SOCK_DGRAM兩種類型的區別【轉】

sock_stream 是有保障的(即能保證數據正確傳送到對方)面向連接的SOCKET&#xff0c;多用于資料(如文件)傳送。 sock_dgram 是無保障的面向消息的socket &#xff0c; 主要用于在網絡上發廣播信息。 SOCK_STREAM是基于TCP的&#xff0c;數據傳輸比較有保障。SOCK_DGRAM是基于U…

JavaScript將字符串中的每一個單詞的第一個字母變為大寫其余均為小寫

要求&#xff1a; 確保字符串的每個單詞首字母都大寫&#xff0c;其余部分小寫。 這里我自己寫了兩種方法&#xff0c;或者說是一種方法&#xff0c;另一個是該方法的變種。 第一種&#xff1a; function titleCase(str) {var newarr,newarr1[]; newarr str . toLowerCase() .…

聊天機器人的分類及綜述

文章目錄[toc] 目錄前言&#xff1a;1、技術方向2、chatbot的知識框架3、應用的分類4、chatbot的幾個challenges5、工業應用綜述總結&#xff1a;目錄 前言&#xff1a; 最近由于工作需要&#xff0c;要開發一款智能客服&#xff0c;目前正在搞業務咨詢模塊的功能&#xff0c…

【python】數據結構和算法 + 淺談單鏈表與雙鏈表的區別

有這么一句話說“程序數據結構算法”&#xff0c;也有人說“如果把編程比作做菜&#xff0c;那么數據結構就好比食材&#xff08;菜&#xff09;&#xff0c;算法就好比廚藝&#xff08;做菜的技巧&#xff09;”。 當然這是籠統的說法&#xff0c;不過也稍微懂得了數據結構和…

Ironic 安裝和配置詳解

轉自&#xff1a;http://amar266.blogspot.com/2014/12/ironic-installation-and-configuration.html 1.Install Openstack With Neutron 2.Create and delete vm to test the setup 3.Configure existing setup for ironic 3.1.Configure ironic user in keystone # keystone …

webpack使用優化(基本篇)

轉自&#xff1a;https://github.com/lcxfs1991/blog/issues/2 前言 本文不是webpack入門文章&#xff0c;如果對webpack還不了解&#xff0c;請前往題葉的Webpack入門&#xff0c;或者阮老師的Webpack-Demos。 為什么要使用Webpack 與react一類模塊化開發的框架搭配著用比較好…

word2vec中單詞向詞向量的轉換過程詳解

目錄前言&#xff1a;1、Word2Vec兩種模型的大致印象2、CBOW模型流程舉例3、CBOW模型流程舉例總結&#xff1a; 目錄 前言&#xff1a; 針對word2vec是如何得到詞向量的&#xff1f;這篇文章肯定能解決你的疑惑。該篇文章主要參考知乎某大神的回答&#xff0c;個人在此基礎上…

Python把函數作為參數傳入的高階編程方法

map:接受兩個參數&#xff08;函數&#xff0c;Iterable&#xff09;&#xff0c;map將傳入的函數依次作用于Iterable的每個元素&#xff0c;并且返回新的Iterable def f(x):return x*x r map(f,[1,2,3,4]) #此時的r為惰性求值——可用next()和for...in取值 #通過list()返…

《編程珠璣(第2版?修訂版)》—第2章2.2節無處不在的二分搜索

本節書摘來自異步社區《編程珠璣&#xff08;第2版?修訂版&#xff09;》一書中的第2章2.2節無處不在的二分搜索&#xff0c;作者【美】Jon Bentley&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.2 無處不在的二分搜索我想到的一個數在1到100之間&…

JavaScript學習筆記(四)——jQuery插件開發與發布

jQuery插件就是以jQuery庫為基礎衍生出來的庫&#xff0c;jQuery插件的好處是封裝功能&#xff0c;提高了代碼的復用性&#xff0c;加快了開發速度&#xff0c;現在網絡上開源的jQuery插件非常多&#xff0c;隨著版本的不停迭代越來越穩定好用&#xff0c;在jQuery官網有許多插…

AIML元素詳細說明

目錄前言&#xff1a;1、簡介2、詳細說明總結&#xff1a; 目錄 前言&#xff1a; 智能客服客戶咨詢功能的實現主要依靠的就是Python的AIML庫&#xff0c;這里就先介紹下AIML。 詳細的使用教程可參考&#xff1a;https://github.com/andelf/PyAIML 目前大部分AIML只支持Py…

【解決】如何打開.ipynb文件

最近碰到文件名后綴為.ipynb文件&#xff0c;起初沒太在意這種文件格式&#xff0c;用Notepad打開之后看到也是類似于JSON格式的信息&#xff0c;以為也是為其他的一些文件服務的&#xff08;類似于配置一些HTML文件的配置文件&#xff09;。但是后來才發現這也是一種文本表示形…

《樹莓派學習指南(基于Linux)》——1.4 將Raspbian燒錄到SD卡

本節書摘來異步社區《樹莓派學習指南&#xff08;基于Linux&#xff09;》一書中的第1章&#xff0c;第1.4節&#xff0c;作者&#xff1a;【英】Peter Membrey ,【澳】David Hows &#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看 1.4 將Raspbian燒錄到SD卡 …

python單向鏈表和雙向鏈表的圖示代碼說明

圖示說明&#xff1a; 單向鏈表&#xff1a; insert、 remove、 update、pop方法 class Node:def __init__(self, data):self.data dataself.next Nonedef __str__(self):return str(self.data)# 通過單鏈表構建一個list的結構&#xff1a; 添加 刪除 插入 查找 獲取長…

不使用Ajax,如何實現表單提交不刷新頁面

不使用Ajax&#xff0c;如何實現表單提交不刷新頁面&#xff1f; 目前&#xff0c;我想到的是使用<iframe>&#xff0c;如果有其他的方式&#xff0c;后續再補。舉個栗子&#xff1a; 在表單上傳文件的時候必須設置enctype"multipart/form-data"表示表單既有文…

AIML知識庫數據匹配原理解析

目錄&#xff1a;前言&#xff1a;1、AIML系統工作流程2、AIML的核心推理機制3、推理舉例4、匹配規則及實踐中遇到的一些問題的解釋總結&#xff1a; 目錄&#xff1a; 前言&#xff1a; 參考&#xff1a;《Alice機理分析與應用研究》 關于AIML庫這里就不介紹了&#xff0c…

【Python】模擬面試技術面試題答

一、 python語法 1. 請說一下你對迭代器和生成器的區別&#xff1f; 2. 什么是線程安全&#xff1f; 3. 你所遵循的代碼規范是什么&#xff1f;請舉例說明其要求&#xff1f; 4. Python中怎么簡單的實現列表去重&#xff1f; 5. python 中 yield 的用法…

ROS機器人程序設計(原書第2版)2.3 理解ROS開源社區級

2.3 理解ROS開源社區級 ROS開源社區級的概念主要是ROS資源&#xff0c;其能夠通過獨立的網絡社區分享軟件和知識。這些資源包括&#xff1a; 發行版&#xff08;Distribution&#xff09; ROS發行版是可以獨立安裝、帶有版本號的一系列綜合功能包。ROS發行版像Linux發行版一樣…

Win7 U盤安裝Ubuntu16.04 雙系統

Win7系統下安裝Ubuntu系統&#xff0c;主要分為三步&#xff1a; 第1步&#xff1a;制作U盤啟動盤 第2步&#xff1a;安裝Ubuntu系統 第3步&#xff1a;創建啟動系統引導 第1步&#xff1a;制作U盤啟動盤 1.下載Ubuntu16.04安裝鏡像&#xff0c;官網地址&#xff1a;http://www…