python:序列:字串,列表,元組
序列型別操作符
序列操作符 |
作用 |
---|---|
seq[ind:ind2] | 獲得下標從ind1到ind2之間的元素 |
seq * expr | 序列重複expr次 |
seq1 + se2 | 連結序列seq1和seq2 |
obj in seq | 判斷obj元素是否包含在seq中 |
obj not in seq | 判讀obj元素是否不包含在seq中 |
seq[ind] | 獲得下標為ind的元素 |
序列型別轉換工廠函式
函式 | 含義 |
---|---|
list(iter) | 把可迭代的物件轉換為列表 |
str(obj) | 把obj物件轉換成字串(物件的字串表示法) |
unicode(obj) |
把物件轉換成unicode字串(使用預設編碼) |
basestring() | 抽象工廠函式,其作用僅僅是為str和unicode函式提供父類,所以不能被例項化,也不能被呼叫, |
tuple(iter) | 把一個可迭代物件轉換成一個元組物件 |
序列型別可用的內建函式
函式名 | 功能 |
---|---|
enumerate(iter) | 接受一個可迭代物件作為引數,返回一個enumerate物件,(同時也是一個迭代器)該物件生成由iter每個元素的index值和item值組成的元組 |
len(seq) | 返回seq的長度 |
max(iter,key=None) or max(arg0,arg1...key=None) | 返回iter裡面的最小值或者返回(arg0,arg1....)裡面的最小值,如果指定了key,這個key必須是一個可以傳給sort()方法的,用於比較的回撥函式 |
reversed(seq) | 接受一個序列作為引數,返回一個逆序訪問的迭代器 |
sorted (iter,func = None,key= None,reverse = False) | 接受一個可迭代物件作為引數,返回一個遊戲的列表,可選引數func,key和reverse的含義跟list.sort(),內建函式的引數哈奴一樣 |
sum(seq,init=0) | 返回seq和可選引數init的總和,其效果等同於reduce(operator.add,seq,init) |
zip(it0,it1,...itN) | 返回一個列表,其第一個元素是it0,it1,,,,這些元素的第一個元素組成的一個元組,第二個,,,,依次類推。 |
字串格式化符號
格式化字元 | 轉換方式 |
---|---|
%c | 轉換成字元,(ASCII碼值,或者長度為一的字串) |
%ra | 優先用repr()函式進行字串轉換 |
%s | 優先用str()函式進行字串轉換 |
%d/%i | 轉成有符號十進位制數 |
%ub | 轉成無符號十進位制數 |
%ob | 轉成無符號把禁止數 |
%xb/%Xb |
轉成無符號十六進位制數(x/X代表轉換後的十六進位制字元的大小寫) |
%e/%E | 轉成科學計數法(e/E控制輸出e/E) |
%f/%F | 轉成浮點數(小數部分自動階段) |
%g/%G | %e和%f/%E和%F的縮寫 |
%% | 輸出% |
格式化操作符輔助指令
符號 | 作用 |
---|---|
* | 定義寬度或者小數點精度 |
- | 用左對齊 |
+ | 在整數前面顯示加號 |
<sp> | 在整數前面顯示空格 |
# | 在八進位制數前面顯示零('0'),在十六進位制前面顯示'0x'或者‘0X’(取決於用的是‘x’還是'X') |
0 | 顯示的數字前面填充‘0’而不是預設的空格 |
% | ‘%%’輸出一個單一的‘%’ |
(var) | 對映變數(字典引數) |
m.n | m是顯示的最小總寬度,n是小數點後的位數,(如果可用的話) |
字串型別內建方法
方法 | 描述 |
---|---|
string.capitalize() | 把字串的第一個字串大寫 |
string.center(windth) | 返回一個原字串居中,並使用空格填充至長度width的新字串 |
string.count(str,beg=0,end=len(string)) | 返回str在string裡面出現的次數,如果beg或者end指定則返回指定範圍內str出現的次數 |
string.decode(encoding='UTF-8',ERRORS='STRICT') | 以dncoding指定的編碼格式解碼string,如果出錯預設報yigeValueError的異常,除非errors指定的是‘ignore’或者'replace' |
string.decode(encoding='UTF-8',ERRORS='STRICT')a |
以coding指定的編碼格式解碼string,如果出錯預設報yigeValueError的異常,除非errors指定的是‘ignore’或者'replace' |
string.endswith(obj,beg=0,end=len(string))b,e | 堅持字串是否以obj結束,如果beg或者end制定範圍,則堅持是否半酣在制定範圍內,如果是返回開始的索引值,否者返回-1 |
string.expandtabs(tabsize=8) | 把字串string中的tab符號轉為空殼,預設的空格數,tabsize是8 |
string.find(str,beg=0,en=len(string)) | 檢測str是否包含在string中,如果beg和end指定範圍,則檢查是否包含在指定範圍內,如果是返回開始的索引值,否則返回-1 |
string.index(str,beg=0,end=len(string)) | 跟find一樣,只不過如果str不在string中會報一個異常 |
string.isalnum() a,b,c | 如果string至少有一個字元並且所有字元都是字母或數字則返回True,否則返回False |
string.isalpha() a,b,c | 如果string至少有一個字元並且所有字元都是字母則返回True,否則返回False |
string.isdecimal() b,c,d | 如果string只包含十進位制數字則返回True,否則返回False |
string.isdigit()b,c | 如果string只包含數字則返回True,否則返回False |
string.islower()b,c | 如果string中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是小寫,則返回True,否則返回False |
string.isnumeric()b,c,d | 如果string中只包含數字字元,則返回True,否則返回False |
string.isspace()b,c | 如果string只包含空格,則返回True,否則返回Flase |
string.istitle()b,c | 如果string是標題化(見title())則返回True,否則返回False |
string.isupper()b,c | 如果string中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫de)字元都是大寫,則返回True,否則返回False |
string.join(seq) | 以string作為分隔符,將seq中所有的元素,(字串表示)合併為一個新的字串 |
string.ljust(windth) | 返回一個原字串左對齊,並使用空格填充至長度width的新字串 |
string.lower() | 轉換string中所有大小寫為小寫 |
string.lstrip() | 截掉string左邊的空格 |
string.parititle(str)e | 有點像find()和split()的結合體,從str出現的第一個位置起,把字串string分成一個3元組,(string_pre_str,str,string_post_str),如果string中不包含str則string_pre_str==string |
string.replace(str1,str2,num=stringcount(str1)) | 把string中str1替換成str2,如果num指定,則替換不超過num次 |
string.rfind(str,beg=0,end=len(string)) | 類似於find()函式,不過是從右邊開始查詢 |
string.rindex(str,beg=0,end=len(string)) | 類似於index()函式,不過從右邊開始查詢 |
string.rjust(windth) | 返回一個原字串右對齊,並使用空格填充至長度width的新字串 |
string.rpartition(str)e | 類似於partition()函式,不過是從右邊開始查詢 |
string.rstrip() | 刪除string字串未尾的空格 |
string.split(str="",num=string.count(str)) | 以str為分割符切片string,如果num有指定值,則僅分割num個子字串 |
string.splitlines(num=string.count('\n'))b,c | 按照行分隔,返回一個包含各行作為元素的列表,如果num指定則僅切片num行 |
string.startswith(obj,beg=0,end=len(string))b,e | 檢查字串是否以obj開頭,是則返回True,否則返回False,如果beg和end指定值,則在指定範圍內檢查 |
string.strip([str]) | 在string上執行lstrip()he rstrip() |
string.swapcase() | 翻轉string中的大小寫 |
string.title()b,c | 返回標題化,的string,就是說所有單詞都是以大寫開始,其餘字母均為小寫(見istitle()) |
string.translate(str,del="") | 根據str給出的變(包含256個字元)轉換string的字元,要過濾掉的字元放到del引數中 |
string.upper() | 轉換string中所有大小的字元為大寫 |
string.zfill(width) | 返回長度為width的字串,原字串string右對齊,前面填充0 |
字串模板(Template)
from string import Template
s = Template("There art $howmany $lang Quotation Symbols");
print(s.substitute(lang='Python',howmany=3));
字串內建函式
cmp():內建cmp()函式是根據字串的ASCII碼值進行比較
str1="abc";
str2="lmn";
str3="xyz";
cmp(str1,str2);
輸出:-11
cmp(str3,str1);
輸出:23;
cmp(str2,'lmn");
輸出:0
len();內建函式len()返回字串的字元數量
str1="abc";
len(str1);
輸出:3
len("hello world!");
輸出:12
max and min():根據ASCII碼值返回字串最大和最小的字元
min("ab12cd");
輸出:1
min("AB12CD");
輸出:1
min("ABCDEFG");
輸出:A
enumerate():
s="foobar";
for i ,t in enumerate(s):
print(i,t);
輸出:
0 f
1 o
2 o
3 b
4 a
5 r
zip():
s,t= "foa" , "obr";
zip(s,t);
輸出:[('f','o'),('o','b'),('a','r')]
chr():該函式用一個範圍在256以內的整數作為引數,返回一個對應的字元,
chr(65);
輸出:'A'
unichr():跟chr()函式一樣,不同的是返回的是Unicode字元
unichr(123456);
輸出:u'\u3039'
ord():該函式是chr()函式(對於8位的ASCII字串)或unichr()函式(對於Unicode物件)的配對函式,它以一個字串(長度為1)的字串作為引數,返回對於的ASCII數值,或者Unicode數值,如果所給的Unicode字元超出了你的Python的定義範圍,則會引發一個TypeError的異常
ord('a');
輸出:97
ord(u'\ufffff');
輸出:
Traceback (most recent call last):
File "<stdin>,line 1 ,in ?
ord('u\ufffff')
TypeError:ord() expected a character, but string of length 2 found