1. 程式人生 > >Python中擷取強大的一個東西

Python中擷取強大的一個東西

  1. str[0:5]
  2. str[:]
  3. str[4:] #從第四個到最後一位
  4. str[:-3] #從最左側到倒數第三位(不含 第三位)
  5. str[2]
  6. str[1:9:2]
  7. str[-3:] 表示擷取後三位
  8. str[::-1] 反轉字串
  9. str[-2:]從倒數第二位,到最右側所 有的字元

第一種形式其實就是切片的基本形式,擷取第一位到第四位 的字元。注意:在切片中,不包括後一個數字代表的字元。剩下的都是切片的最種形式,第二種表示 截 取 這 個字串的全部字元,可以這樣理解,":" 前的 代表字串開頭,“:” 後 的 代表字串的尾。這樣的話第三種的意思是從第五個字元到結 尾。這裡需要注意的是片的標號是左邊從0

開始算的,右邊從-1 開始算的,為什麼右為不也從零開始 呢?因為數學上沒有”-0“ 的概念,只要這樣將就了。第四 種表示從頭開始到倒數第三個字元之前,不包括倒數第三個字元。第五種表示,擷取一個字元就是第三個字元,標號為2 。最特殊的就 是第六種,這是一種新加的功 能,它的標號有三個,前兩個很清楚是什麼意思,最後一個表示步長。意思是取出字串的第二到第8 位, 以2 的步長取出字元。比如str= '0123456789'str[1:9:2] 的 結果是’1357‘str[1:9:-1] 的結果是'87654321' 。 這也是一個技巧可以用 str[::-1] 創造一個與原字串順序相反的字串。


‘’
字元在string 類 型中好像很特殊。比如一個字串為L=“test” 。 那麼:
L.count('') ===> 5
'' in L ===> True
L.index('') ===> 0
L.find('') ===> 0

Python
中主要分為3 大類:number,sequence,mapping
string,list ,tuple
屬於sequence   dictionary 屬於mapping



List
list 順序,可變的序列,成員可以是任何型別,也可以是list 。 用"+" 進行連線兩邊型別必須都是list
list
增加成員的方法有:
list.append()
此方法只能向list 增加一個成員,比如引數是list , 作為一個成員新增
list.extend()
list + [args]


list
刪除操作
li = [0,1,2,3,4]   li[4:]=[ ] -----> li=[0,1,2,3]    
若寫成li[4]=[ ] li=[0,1,2,3,4,[ ]]
li.pop(index) ----->[0,1,2]  
預設彈出最後一個成員,也可以指定index
del li[2] ----->[0,1]
li.remove(index)


string list 之間的轉換
str = "abc"
li = list(str)
li = [i for i in str]    
li = " ".join(str).split()
第一,二種效率要比第三種高

str = "".join(li)
L.sort([cmp[, key[, reverse]]])
#
L 進行排序。

list.remove(element)
只刪除第一次出現的元素


Dictionary {key1:value1,key2:value2....}
1,
沒有順序,只能通過key 來訪問
2,key
必須是不可變的物件,value 可以是任何物件,list 不能做為key,key 不 能重複,key 大小寫敏感
3
+ × 切片操作是非法的

  • D.iterkeys()
  • D.itervalues()
  • D.iteritems()

這三個函式均返回一個iterator 物件,分別是keys/values/itemsiterator 。 可以用在for 迴圈中。比如:

  • for x in D.iterkeys()

上 面說到的for x in D 實際上就是這種形式的簡寫,x 遍 歷的是keys 。如果要遍歷values ,也很簡單隻要把D.iterkeys() 改 為D.itervalues() 就 可以了。iteritems() 也類似。在iterator 對 象中有一個next() 的方法,可以像for 一樣,一次一次的呼叫next() 方 法,可以遍 歷iterator 中的資料。

>>> for k in d.iterkeys():
    print "%s = %s "% (k,d[k])
一定要是一個tuple 型別資料 否則會提示:Typeerror:not enough arguments for format string. dictionary 中刪除元素有:
del d[key]
d.clear()

p ython 隨機數、隨機字元、隨機字串
from random import *
random()-->
預設是產生一個0-1 之 間的隨機浮點數
uniform(a,b)
產生一個[a,b) 之間的隨機數
randint(start,end,step)
產生一個[start,end] 步長為step 的 隨機整數,step 預設為1
randrange(start,end,step)
randint 不同的是它不包括end.
choice(seq)
從序列中隨機取一個元素,seq 不能為空
sample(seq,num)
從序列中隨機取num 個隨機元素,返回一個list
shuffle(seq)
洗牌了,打亂順序,seq 必須為list ,結果會改變seq

import random

import string

# 隨機整數:

print random.randint(1,50)

# 隨機選取0100 間 的偶數:

print random.randrange(0, 101, 2)


Python 內建函式

函式名稱 行為

str( 任意物件) 返回任意物件的字串表示式,str(dir()), 則返回一個 字串

list( 序列) 返回一個序列的對應列表,list("tom") ,返回['t','o','m']

tuple( 序列) 返回一個序列對應的元組,tuple("tom"), 返回('t','o','m')

int(x) 把一個字串或數字轉換為整數, 去掉浮點部分,int(3.9) 返 回3

long(x) 把一個字串或數字轉換為長整數, 去掉浮點部分,long(3.9) 返 回3L

float(x) 把一個字串或數字轉換為浮點數,long('3.9') 返 回3.9

hex(i) 把字串或數字轉換為16 進位制數,hex(256) 返 回'0x100'

oct(i) 把字串或數字轉換為8 進位制數, oct(256) 返 回'0400'

ord(C) 返回字串的ASCII,ord("A") 返 回65

chr(i) 返回ASCII 值為i 的單個字元,chr(65) 返 回"A"

min(i,[,i]*) 返回最小項/ 成員, min(12,56,5,45) 返回5

max(i,[,i]*) 返回最大項/ 成員, max(12,56,5,45) 返回56



file
檔案操作 file python 是一個特殊的型別,它用於在python 程 序中對外部的檔案進行操作。在python 中一切都是物件,file 也不例外,filefile 的 方法和屬性。下面先來看如何建立一個file 物件:

  • file(name[, mode[, buffering]])

file() 函 數用於建立一個file 物件,它有一個別名叫open() ,可能更形象一些,它們是內建函式。來看 看它的引數。它引數都是以字串的形式傳遞的。name 是檔案的名字。
mode
是開啟的模式,可選的值為r w a U ,分別代表讀(預設) 寫 新增 支援各種換行符的模式。用wa 模 式開啟檔案的話,如果檔案不存在,那麼就自動建立。此外,用w 模式開啟一個已經存在的檔案時,原有檔案的內容會被清空, 因為一開始檔案的操作的標記是在檔案的開頭的,這時候進行寫操作,無疑會把原有的內容給抹掉。由於歷史的原因,換行符在不同的系統中有不同模式,比如在 unix 中是一個/n ,而在windows 中是‘/r/n’ , 用U 模式開啟檔案,就是支援所有的換行模式,也就說‘/r’ '/n' '/r/n' 都可表示換 行,會有一個tuple 用來存貯這個檔案中用到過的換行符。不過,雖說換行有多種模式,讀到python 中 統一用/n 代替。在模式 字元的後面,還可以加上+ b t 這兩種標識,分別表示可以對檔案同時進 行讀寫操作和用二進位制模式、文字模式(預設)開啟檔案。
buffering
如果為0 表示不進行緩衝; 如果為1 表 示進行 行緩衝“; 如果是一個大於1 的數表示緩衝區的大小,應該是以字 節為單位的。

file
物件有自己的屬性和方法。先來看看file 的屬性。

  • closed # 標記檔案是否已經關閉,由close() 改寫
  • encoding # 檔案編碼
  • mode # 打 開模式
  • name # 文 件名
  • newlines # 檔案中用到的換行模式,是一個tuple
  • softspace #boolean 型,一般為0 ,據說用於print


file
的讀寫方法:

  • F.read([size]) #size 為讀取的長度,以byte 為單位
  • F.readline([size])
    #
    讀一行,如果定義了size , 有可能返回的只是一行的一部分
  • F.readlines([size])
    #
    把檔案每一行作為一個list 的 一個成員,並返回這個list 。其實它的內部是通過迴圈呼叫readline() 來實現的。如果提 供size 引數,size 是表示讀取內容的總長,也就是說可能只讀到檔案的一部分。
  • F.write(str)
    #
    str 寫到檔案中,write() 並 不會在str 後加上一個換行符
  • F.writelines(seq)
    #
    seq 的內容全部寫到檔案 中。這個函式也只是忠實地寫入,不會在每行後面加上任何東西。

file 的 其他方法:

  • F.close()
    #
    關閉檔案。python 會在一 個檔案不用後自動關閉檔案,不過這一功能沒有保證,最好還是養成自己關閉的習慣。如果一個檔案在關閉後還對其進行操作會產生ValueError
  • F.flush()
    #
    把緩衝區的內容寫入硬碟
  • F.fileno()
    #
    返回一個長整型的 檔案標籤
  • F.isatty()
    #
    檔案是否是一個終端裝置檔案(unix 系 統中的)
  • F.tell()
    #
    返回檔案操作標記的當前位置,以檔案的開頭為原點
  • F.next()
    #
    返回下一行,並將檔案操作標記位移到下一行。把一個file 用 於for ... in file 這樣的語句時,就是呼叫next() 函式來實現遍歷的。
  • F.seek(offset[,whence])
    #
    將檔案打操作標記移到offset 的 位置。這個offset 一般是相對於檔案的開頭來計算的,一般為正數。但如果提供了whence 參 數就不一定了, whence 可以為0 表示從頭開始計算,1 表示以當前 位置為原點計算。2 表示以檔案末尾為原點進行計算。需要注意,如果檔案以aa+ 的 模式開啟,每次進 行寫操作時,檔案操作標記會自動返回到檔案末尾。
  • F.truncate([size])
    #
    把檔案裁成規定的大小,預設的是裁到當前檔案操作標記的位 置。如果size 比檔案的大小還要大,依據系統的不同可能是不改變檔案,也可能是用0 把檔案補到相 應的大小,也可能是以一些隨機的內容加上去。