Time of Update: 2017-01-18
本節內容:1.前言2.相關概念3.Python中的預設編碼4.Python2與Python3中對字串的支援5.字元編碼轉換一、前言Python中的字元編碼是個老生常談的話題,同行們都寫過很多這方面的文章。有的人云亦云,也有的寫得很深入。近日看到某知名培訓機構的教學視頻中再次談及此問題,講解的還是不盡人意,所以才想寫這篇文字。一方面,梳理一下相關知識,另一方面,希望給其他人些許協助。Python2的 預設編碼 是ASCII,不能識別中文字元,需要顯式指定字元編碼;Python3的 預設編碼
Time of Update: 2017-01-18
1.open使用open開啟檔案後一定要記得調用檔案對象的close()方法。比如可以用try/finally語句來確保最後能關閉檔案。file_object = open('thefile.txt')try: all_the_text = file_object.read( )finally: file_object.close( )註:不能把open語句放在try塊裡,因為當開啟檔案出現異常時,檔案對象file_object無法執行close()方法。2.讀檔案讀文字檔input =
Time of Update: 2017-01-18
有時候你會看到很Cool的Python代碼,你驚訝於它的簡潔,它的優雅,你不由自主地讚歎:竟然還能這樣寫。其實,這些優雅的代碼都要歸功於Python的特性,只要你能掌握這些Pythonic的技巧,你一樣可以寫出像詩一樣的Python代碼。1.匯入模組你是不是經常對調用模組時輸入一長串模組索引感到頭疼?說實在的,數量少的時候或許還可以勉強忍受,一旦程式規模上去了,這也是一項不容小覷的工程。#Badimport urllib.requesturl =
Time of Update: 2017-01-18
寫在前面題目所說的並不是目的,主要是為了更詳細的瞭解網站的反爬機制,如果真的想要提高部落格的閱讀量,優質的內容必不可少。瞭解網站的反爬機制一般網站從以下幾個方面反爬蟲:1.
Time of Update: 2017-01-18
寫在前面這次的爬蟲是關於樓價資訊的抓取,目的在於練習10萬以上的資料處理及整站式抓取。資料量的提升最直觀的感覺便是對函數邏輯要求的提高,針對Python的特性,謹慎的選擇資料結構。以往小資料量的抓取,即使函數邏輯部分重複,I/O請求頻率密集,迴圈套嵌過深,也不過是1~2s的差別,而隨著資料規模的提高,這1~2s的差別就有可能擴充成為1~2h。因此對於要抓取資料量較多的網站,可以從兩方面著手降低抓取資訊的時間成本。1)最佳化函數邏輯,選擇適當的資料結構,符合Pythonic的編程習慣。例如,字串的
Time of Update: 2017-01-18
一,Socket編程(1)Socket方法介紹 Socket是網路編程的一個抽象概念。通常我們用一個Socket表示“開啟了一個網路連結“,而開啟一個Socket需要知道目標電腦的IP地址和連接埠號碼,再指定協議類型即可。 通訊端是一個雙向的通訊通道的端點。通訊端可能在溝通過程,進程之間在同一台機器上,或在不同的電腦之間的進程 要建立一個通訊端,必須使用Socket模組的socket.socket()方法在socket模組中的一般文法:s =
Time of Update: 2017-01-18
本人已經在營運行業工作了將近十年,我最早接觸Linux是在大二的樣子,那時候只追求易懂,所以就選擇了Ubuntu作為學習、使用的對象,它簡單、易用、好操作、介面絢麗,對於想接觸Linux的新手來說是非常不錯的。後來因為個人的知識有限,玩不轉Linux的種種配置、各種外掛程式以及軟體缺失,加之沒有持之以恒的堅持下去,使用了一段時間後感覺Bug多、沒遊戲、辦公寫文檔也不方便,很多軟體需要現學,最終希望用大學時光學習Linux的願望夭折了。後來一段時間裡,自己接觸了Python語言,Python語言讓
Time of Update: 2017-01-18
複製代碼 代碼如下:>>> import urllib>>> data = '麗江'>>> print data麗江>>> data'\xe4\xb8\xbd\xe6\xb1\x9f'>>> urllib.quote(data)'%E4%B8%BD%E6%B1%9F'那我們想轉回去呢?複製代碼 代碼如下:>>>
Time of Update: 2017-01-18
Windows下將gvim8配置為Python IDE大概分為以下四步,每步介紹的都非常詳細,一起看看吧。1.準備工作將下面的安裝包或者檔案下載好1) Python 2.7 http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi2) gvim8.0 http://www.vim.org/download.php3) Exuberant Ctags http://ctags.sourceforge.net/
Time of Update: 2017-01-18
前言zabbix是個非常強大的監控工具,可以監控linux和windows的伺服器資料,也可以通過自訂key來擴充預設的監控項,但是內建的郵件警示提供的資訊卻不太友善。本文想通過自定指令碼的方式,實現在警示郵件的同時發送對應的映像和url串連。步驟如下:1、編輯zabbix_server.conf檔案,修改AlertScriptsPath參數,該參數用於指定外部指令碼的絕對路徑。vim
Time of Update: 2017-01-18
Flask中的SERVER_NAME主要做兩件事: 協助Flask在活動的請求(request)之外產生絕對URL(比如郵件中嵌入網站URL) 用於子網域名稱支援很多人誤以為它可以做這兩件事之外的其它事情。一、第一件事:絕對URL我們知道,url_for預設情況下是產生相對URL,它有個參數_external,如果設定為真,則會產生一個絕對URL(就是HTTP開頭帶網域名稱等資訊的)。若不指定SERVER_NAME,預設使用當前活動的請求(request)來產生URL。下面舉個例子示範一下:
Time of Update: 2017-01-18
在以上兩篇文章中已經介紹到了 Python 爬蟲和 MongoDB , 那麼下面我就將爬蟲爬下來的資料存到 MongoDB 中去,首先來介紹一下我們將要爬取的網站, readfree 網站,這個網站非常的好,我們只需要每天簽到就可以免費下載三本書,良心網站,下面我就將該網站上的每日推薦書籍爬下來。利用上面幾篇文章介紹的方法,我們很容易的就可以在網頁的原始碼中尋找到書籍的姓名和書籍作者的資訊。找到之後我們複製 XPath ,然後進行提取即可。原始碼如下所示# coding=utf-8import
Time of Update: 2017-01-18
在Python中實現正則的方式是通過re(regular
Time of Update: 2017-01-18
Regex是用於處理字串的強大工具,它並不是Python的一部分。其他程式設計語言中也有Regex的概念,區別只在於不同的程式設計語言實現支援的文法數量不同。它擁有自己獨特的文法以及一個獨立的處理引擎,在提供了Regex的語言裡,Regex的文法都是一樣的。下圖展示了使用Regex進行匹配的流程:1.1介紹 Regex並不是Python的一部分。Regex是用於處理字串的強大工具,擁有自己獨特的文法以及一個獨立的處理引擎,效率上可能不如str內建的方法,但功能十分強大。得益於這一點,在提供了R
Time of Update: 2017-01-18
最近,接手的項目裡,提供的資料檔案格式簡直讓人看不下去,使用pandas打不開,一直是io error.仔細查看,發現檔案中很多行資料是以"結尾,然而其他行缺失,因而需求也就很明顯了:判斷每行的結尾是否有",沒有的話,加上就好了。採用倒敘的方式好了,畢竟很多人需要的只是一個快速的解決方案,而不是一個why. 解決方案如下: b = open('b_file.txt', w) with open('a_file.txt', 'r')
Time of Update: 2017-01-18
如果某類裡沒有__init__方法函數,通過類名字建立的執行個體對象為空白,切沒有初始化;如果有此方法函數,通常作為類的第一個方法函數,有點像C++等語言裡的建構函式。class Ca:def __init__(self, v): # 注意前後各兩個底線self.name = vdef pr(self):print "a--->", self.nameia = Ca("Jeapedu") # 本質調用的是__init__方法函數ia.pr()Ca.pr(ia) 輸出結果a---
Time of Update: 2017-01-18
一、基本概念尋找(Searching)就是根據給定的某個值,在尋找表中確定一個其關鍵字等於給定值的資料元素(或記錄)。尋找表(Search Table):由同一類型的資料元素(或記錄)構成的集合關鍵字(Key):資料元素中某個資料項目的值,又稱為索引值。主鍵(Primary Key):可唯一地標識某個資料元素或記錄的關鍵字。尋找表按照操作方式可分為: 靜態尋找表(Static Search Table):只做尋找操作的尋找表。它的主要操作是: 查詢某個“特定的”資料元素是否在表中
Time of Update: 2017-01-18
裝飾器的功能在很多語言中都有,名字也不盡相同,其實它體現的是一種設計模式,強調的是開放封閉原則,更多的用於後期功能更新而不是編寫新的代碼。裝飾器不光能裝飾函數,也能裝飾其他的對象,比如類,但通常,我們以裝飾函數為例子介紹其用法。要理解在Python中裝飾器的原理,需要一步一步來。本文盡量描述得淺顯易懂,從最基礎的內容講起。(註:以下使用Python3.5.1環境)一、Python的函數相關基礎第一,必須強調的是python是從上往下順序執行的,而且碰到函數的定義代碼塊是不會立即執行它的,只有等到
Time of Update: 2017-01-18
前言Regex的基礎知識就不說了,有興趣的可以點擊這裡,提取一般分兩種情況,一種是提取在文本中提取單個位置的字串,另一種是提取連續多個位置的字串。日誌分析會遇到這種情況,下面我會分別講一下對應的方法。一、單個位置的字串提取這種情況我們可以使用(.+?)這個Regex來提取。 舉例,一個字串"a123b",如果我們想提取ab之間的值123,可以使用findall配合Regex,這樣會返回一個包含所以符合情況的list。代碼如下:import restr = "a123b"print re.
Time of Update: 2017-01-18
一、排序的基本概念和分類所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。排序演算法,就是如何使得記錄按照要求排列的方法。排序的穩定性:經過某種排序後,如果兩個記錄序號同等,且兩者在原無序記錄中的先後秩序依然保持不變,則稱所使用的排序方法是穩定的,反之是不穩定的。內排序和外排序內排序:排序過程中,待排序的所有記錄全部放在記憶體中外排序:排序過程中,使用到了外部儲存。通常討論的都是內排序。影響內排序演算法效能的三個因素: