Python中擷取強大的乙個東西

2021-05-23 03:12:42 字數 4157 閱讀 9547

str[0:5]

str[:]

str[4:] #從第四個到最後一位

str[:-3] #從最左側到倒數第三位(不含 第三位)

str[2]

str[1:9:2]

str[-3:] 表示擷取後三位

str[::-1] 反轉字串

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

list

list

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

1, 沒有順序,只能通過key 來訪問

2,key 必須是不可變的物件,value 可以是任何物件,list 不能做為key,key 不 能重複,key 大小寫敏感

3 ,+ × 切片操作是非法的

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

上 面說到的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])

從dictionary 中刪除元素有:

del d[key]

d.clear()

python

隨機數、隨機字元、隨機字串

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) #

隨機選取0 到100 間 的偶數:

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 也不例外,file 有file 的 方法和屬性。下面先來看如何建立乙個file 物件:

file()

函 數用於建立乙個file 物件,它有乙個別名叫open() ,可能更形象一些,它們是內建函式。來看 看它的引數。它引數都是以字串的形式傳遞的。name 是檔案的名字。

mode 是開啟的模式,可選的值為r w a u ,分別代表讀(預設) 寫 新增 支援各種換行符的模式。用w 或a 模 式開啟檔案的話,如果檔案不存在,那麼就自動建立。此外,用w 模式開啟乙個已經存在的檔案時,原有檔案的內容會被清空, 因為一開始檔案的操作的標記是在檔案的開頭的,這時候進行寫操作,無疑會把原有的內容給抹掉。由於歷史的原因,換行符在不同的系統中有不同模式,比如在 unix 中是乙個/n ,而在windows 中是『/r/n』 , 用u 模式開啟檔案,就是支援所有的換行模式,也就說『/r』 '/n' '/r/n' 都可表示換 行,會有乙個tuple 用來存貯這個檔案中用到過的換行符。不過,雖說換行有多種模式,讀到python 中 統一用/n 代替。在模式 字元的後面,還可以加上+ b t 這兩種標識,分別表示可以對檔案同時進 行讀寫操作和用二進位制模式、文字模式(預設)開啟檔案。

buffering 如果為0 表示不進行緩衝; 如果為1 表 示進行「 行緩衝「; 如果是乙個大於1 的數表示緩衝區的大小,應該是以字 節為單位的。

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

file

的讀寫方法:

file

的 其他方法:

Python中可避免讀寫亂碼的乙個強大方法

昨天在幫同學解析一批從網路上爬取的檔案時,遇到乙個奇葩的問題,檔案本身的編碼是gbk,eclipse編輯環境的預設編碼是utf8,使用常規的open方法批量開啟檔案時,某些檔案中存在一些不可被gbk識別的特殊字元導致讀取錯誤,而這些特殊字元又是存在於utf8編碼中的。經不斷嘗試,發現乙個很好的解決辦...

我有乙個強大的祖國

那是一張熟悉的臉,是我痛失親人後看到的最親切的笑臉,它眼裡閃著淚花,話裡充滿著力量。那一刻,我感到自己有乙個強大的祖國。那是一張陌生的臉,是我埋在瓦礫下看見的最勇敢的臉,它撬開了殘垣,搬走了巨石。那一刻,我感到自己有乙個強大的祖國。那是一張美麗的臉,是我躺在病床上看見的天使的臉,它包紮著我的創傷,注...

做乙個內心強大的人

我覺得人生就是需要一步一步的規劃,近期我有什麼目標,我去實現它,才不至於渾渾噩噩的度過吧。前幾天去考教師資格證面試,我秒變主考官的迷妹。給資格證面試的考官都是在一線工作的教師,我覺得從他嘴裡說出來的話蹭蹭長了好幾個高度。做人需要有內涵,可是真正把內涵從內表現出來並且達到一定高度的恐怕沒幾個人吧 也許...