Python入門(三)

來源:互聯網
上載者:User

Subsections

日誌

編碼

字串
列表和字典

一、日誌

#!/usr/bin/python# -*- coding: utf-8 -*-'''Created on 2013-4-26@author: chenll日誌等級NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL如果把looger的層級設定為INFO, 那麼小於INFO層級的日誌都不輸出, 大於等於INFO級 輸出'''import logging  # 建立一個logger  logger = logging.getLogger('Log')  logger.setLevel(logging.DEBUG)   # 建立一個handler,用於寫入記錄檔  fh = logging.FileHandler('test.log')  fh.setLevel(logging.DEBUG)    # 再建立一個handler,用於輸出到控制台  ch = logging.StreamHandler()  ch.setLevel(logging.DEBUG)    # 定義handler的輸出格式  ,時間-類名-等級名稱-日誌內容formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  fh.setFormatter(formatter)  ch.setFormatter(formatter)    # 給logger添加handler  logger.addHandler(fh)  logger.addHandler(ch)     # 記錄一條日誌  logger.info('building table')  

控制台和test.log 輸出:

2013-04-26 10:40:46,381 - Log - INFO - building table

二、編碼

python 中字串分兩種:一種是byte string ,一種是unicode string
py檔案預設是ASCII編碼,中文在顯示時會做一個ASCII到系統預設編碼的轉換,這時就會出錯:SyntaxError: Non-ASCII character。需要在代碼檔案的第一行或第二行添加編碼指示#coding=utf- 8 所有的中文ex:myName="陳" 都會宣告成utf-8 編碼的byte string.

一般python 預設編輯器是ascii ,如果需要更改,操作如下:
importsys
reload(sys)
sys.setdefaultencoding (' utf-8')

字串在Python內部的表示是unicode編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。因此,轉碼的時候一定要先搞明白,字串str是什麼編碼,然後decode成unicode,然後再encode成其他編碼代碼中字串的預設編碼與代碼檔案本身的編碼一致。
1. Unicode 對任何語言文字,都是 1個字元1個編碼,所以“hi!”是3個Unicode字元,“你好!”也是3個Unicode字元。
2. UTF-8 用3個字元來表示1個中文字元,用1個字元來表示英文字元。所以,“hi!”是3個UTF-8字元,“你好!”是7個UTF-8字元。
3. GBK 用2個字元來表示1個中文字元,用1個字元來表示英文字元。所以,“hi!”是3個GBK字元,“你好!”是5個GBK字元。
4. decode方法,是任何字串具有的方法,將字串轉換成unicode格式,參數是源字串的編碼代號。
5. encode 方法,任何字串具有的方法,將字串轉換成參數指定的格式,參數是目標編碼代號。

三、字串常用操作

#!/usr/bin/python#-*- coding: utf-8 -*-'''Created on 2013-4-30@author: chenlly'''#複製字串#strcpy(sStr1,sStr2)sStr1 = 'strcpy'sStr2 = sStr1sStr1 = 'strcpy2'print sStr2#連接字串#strcat(sStr1,sStr2)sStr1 = 'strcat'sStr2 = 'append'sStr1 += sStr2print sStr1#尋找字元#strchr(sStr1,sStr2)# < 0 為未找到sStr1 = 'strchr'sStr2 = 'ch'nPos = sStr1.index(sStr2)print nPos#尋找字串#strchr(sStr1,sStr2)sStr1 = 'abcdefg'sStr2 = 'cde'print sStr1.find(sStr2)#掃描字串是否包含指定的字元#strspn(sStr1,sStr2)sStr1 = '12345678'sStr2 = '456'print len(sStr1 and sStr2)#比較字串#strcmp(sStr1,sStr2)#sStr1 == sStr2:0#sStr1 > sStr2:1#sStr1 < sStr2:-1sStr1 = 'strchr'sStr2 = 'strch'print cmp(sStr1,sStr2)#字串長度#strlen(sStr1)sStr1 = 'strlen'print len(sStr1)#將字串中的大小寫轉換#strlwr(sStr1)sStr1 = 'JCstrlwr'sStr1 = sStr1.upper()sStr1 = sStr1.lower()print sStr1#追加指定長度的字串#strncat(sStr1,sStr2,n)sStr1 = '12345'sStr2 = 'abcdef'n = 3sStr1 += sStr2[0:n]print sStr1#字串指定長度比較#strncmp(sStr1,sStr2,n)sStr1 = '12345'sStr2 = '123bc'n = 3print cmp(sStr1[0:n],sStr2[0:n])#複製指定長度的字元#strncpy(sStr1,sStr2,n)sStr1 = ''sStr2 = '12345'n = 3sStr1 = sStr2[0:n]print sStr1#將字串前n個字元替換為指定的字元#strnset(sStr1,ch,n)sStr1 = '12345'ch = 'r'n = 3sStr1 = n * ch + sStr1[3:]print sStr1#掃描字串#strpbrk(sStr1,sStr2)sStr1 = 'cekjgdklab'sStr2 = 'gka'nPos = -1for c in sStr1:    if c in sStr2:        nPos = sStr1.index(c)        break;print nPos#翻轉字串#strrev(sStr1)sStr1 = 'abcdefg'sStr1 = sStr1[::-1]print sStr1#分割字串#strtok(sStr1,sStr2)sStr1 = 'ab,cde,fgh,ijk'sStr2 = ','sStr1 = sStr1[sStr1.find(sStr2) + 1:]print sStr1#或者s = 'ab,cde,fgh,ijk'print(s.split(','))#連接字串delimiter = ','mylist = ['Brazil', 'Russia', 'India', 'China']print delimiter.join(mylist)#只顯示字母與數字def OnlyCharNum(s,oth=''):    s2 = s.lower();    fomart = 'abcdefghijklmnopqrstuvwxyz0123456789'    for c in s2:        if not c in fomart:            s = s.replace(c,'');    return s;print(OnlyCharNum("中國a000 aa-b"))

 

四、字典和列表
 

dict
採用索引值對(key-value)的形式儲存資料。python對key進行雜湊函數運算,根據計算的結果決定value的儲存地址,所以字典是無序儲存的,且key必須是可雜湊的。可雜湊表示key必須是不可變類型,如:數字、字串、只含不可變類型元素的元組(1,2,3,’abc’)

len(a)

得到字典a中元素的個數

a[k]

取得字典a中鍵K所對應的值

a[k] = v

設定字典a中鍵k所對應的值成為v

del a[k]

使用 key從一個 dictionary中刪除獨立的元素。如,刪除Dictionary dic中的user=’root’:del dic[“user”]

a.clear()

從一個 dictionary中清除所有元素。如,刪除Dictionary dic中的所有元素:dic.clear()

a.copy()

得到字典副本

k in a

字典中存在鍵k則為返回True,沒有則返回False

k not in a

 字典中不存在鍵k則為返回true,反之返回False

a.has_key(k)

判斷字典a中是否含有鍵k

a.items()

得到字典a中的鍵—值對list

a.keys()

得到字典a中鍵的list

a.update([b])

從b字典中更新a字典,如果鍵相同則更新,a中不存在則追加.

a.fromkeys(seq[, value])

建立一個新的字典,其中的鍵來自sql,值來自value

a.values()

得到字典a中值的list

a.get(k[, x])

從字典a中取出鍵為k的值,如果沒有,則返回x

a.setdefault(k[, x])

將鍵為k的值設為預設值x。如果字典a中存在k,則返回k的值,如果不存在,向字典中添加k-x索引值對,並傳回值x

a.pop(k[, x])

取出字典a中鍵k的值,並將其從字典a中刪除,如果字典a中沒有鍵k,則傳回值x

a.popitem()

取出字典a中索引值對,並將其從字典a中刪除

a.iteritems()

返回字典a所有鍵-值對的迭代器。

a.iterkeys()

返回字典a所有鍵的迭代器。

a.itervalues()

返回字典a所有值的迭代器。

 

list
python中集合對象(set)是一組無序排列的可雜湊的值,包含兩種類型:可變集合(set)和不可變集
合(frozenset),所以set不是可雜湊的,frozenset是可雜湊的,能當作字典的鍵。

#!/usr/bin/python#-*- coding: utf-8 -*-'''Created on 2013-4-21@author: chenlly'''def disPlay(dict):    for key in dict:        print key + "," + dict[key]        def dicFun():    #dict2 = dict();    dict2 = {'name':'chen','port':'8809'}    #遍曆字典    disPlay(dict2)    print '---end disPlay---'    #新增資料項目    dict2['ip'] = '198.164'    disPlay(dict2)    print '---end add---'    #修改資料項目    dict2['name'] = 'laoben'    disPlay(dict2)    print '---end edit---'    #刪除已經存在的資料項目    del dict2['name']    disPlay(dict2)    print '---end remove---'        def main():    dicFun();    if __name__ == "__main__":    main();
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.