python字符串操作
概述
所有的標準序列操作(索引、分片、乘法、判斷成員資格、求長度、取最大值和最小值)對字符串同樣適用。
特性:不可修改
字符串格式化
字符串格式化使用字符串操作符即百分號%來實現;在%左側放置一個字符串(格式化字符串),而最右側則放置被格式化的值。可以使用一個值,如一個字符串或者數字,也可以是多個值的元組或者字典(如果希望格式化多個值的話);
格式化字符串的%s部分稱為轉換說明符,它們標記了需要插入轉換位置;
如果在格式化字符串裏面包括百分號,那必須使用%%,這樣Python就不會將百分號誤認為是轉換說明符;
>>> print("Hello, %s. %s enough for ya? " %(‘world‘, ‘Hot‘))
Hello, world. Hot enough for ya?
1.格式化操作符的右操作數可以是任意類型,如果是元組或者映射類型(如字典),那麽字符串格式化將有所不同;
2.如果右操作數是元組的話,則其中的每一個元素都會被單獨格式化,每個值都需要一個對應的轉換說明符;
基本轉換說明符:
- %字符:標記轉換說明符的開始;
- 轉換標誌(可選):- 表示左對齊;+ 表示在轉換值之前要加上正否號;” “(空白字符)表示正數之前保留空格;0 表示轉換值若位數不夠則用0填充;
- 最小字字段寬度(可選):轉換後的字符串至少應該具有該值指定的寬度。如果是 *,則寬度會從元組中讀出;
- 點(.)後跟精度值(可選):如果轉換的是實數,精度值就表示出現在小數點後的位數。如果轉換的是字符串,那麽該數字就表示最大字段寬度。如果是*,那麽精度將會從元組中讀出;
- 轉換類型:
轉換類型 | 含義 |
d, i | 帶符號的十進制整數 |
o | 不帶符號的八進制 |
u | 不帶符號的十進制 |
x(小寫) | 不帶符號的十六進制 |
X(大字) | 不帶符號的十六進制 |
e(小寫) | 科學計數法表示的浮點數 |
E(大寫) | 科學計數法表示的浮點數 |
f, F | 十進制浮點數 |
g | 如果指數大於-4或者小於精度值則和e相同,其他情況與f相同 |
G | 如果指數大於-4或者小於精度值則和E相同,其他情況則與F相同 |
C(大寫) | 單字符(接受整數或者單字符字符串) |
r | 字符串(使用repr轉換任意Python對象) |
s | 字符串(使用str轉換任意Python對象) |
- 簡單轉換
簡單轉換只需寫轉換類型
1 >>> ‘Price os eggs: $%d‘ %42 2 ‘Price os eggs: $42‘ 3 >>> ‘Price os eggs: $%x‘ %42 4 ‘Price os eggs: $2a‘ 5 >>> ‘Pi: %f‘ % pi 6 ‘Pi: 3.141593‘ 7 >>> ‘Very inexact estimate os pi: %i‘ % pi 8 ‘Very inexact estimate os pi: 3‘ 9 >>> ‘Using str: %s‘ % 42L 10 ‘Using str: 42‘ 11 >>> ‘Using str: %r‘ % 42L 12 ‘Using str: 42L‘
- 字段的寬度和精度
轉換說明符可以包括字段寬度和精度。字段寬度是轉換後的值所保留的最小字符個數,精度(對於數字轉換來說)則是結果中應該包含的小數位數,或者(對於字符串轉換來說)是轉換後的值所能包含的最大字符個數。
這兩個參數都是整數(首先是字段寬度,讓後是精度),通過點號(.)分隔。雖然兩個都是兩個可選的參數,但如果只給出精度,就必須包含點號。
1 >>> ‘%10f‘ % pi #字段寬 10 2 ‘ 3.141593‘ 3 >>> ‘%10.2f‘ % pi #字段寬 10,精度 2 4 ‘ 3.14‘ 5 >>> ‘%.2f‘ % pi #精度 2 6 ‘3.14‘ 7 >>> ‘%.5s‘ % ‘hello,world‘ 8 ‘hello‘
可以使用*(星號)作為字段寬度或者精度(或者兩者都使用*),此時數值會從元組參數中讀出
1 >>> print(‘%.*s‘ % (5, ‘hello world‘)) 2 ‘hello‘
- 符號、對齊和用0填充
在字段寬度和精度值之前還可以放置一個“標記”,該標記可以是零、加號、減號或空格。
零表示數字將會用0進行填充
1 >>> print(‘%010.2f‘ % pi) 2 ‘0000003.14‘
在010中開頭的那個0並不意味著字段寬度說明符為八進制,它是個普通的Python數值當使用010作為字段寬度說明符的時候,表示字段寬度為10,並且用0進行填充空位,而不是說字段寬度為8;
減號(-)用來左對齊數值
1 >>> print(‘%-10.2f‘ % pi) 2 ‘3.14
空白(” “)意味著在正數前加上空格(這在對齊正負數時會很有用)
1 >>> print(‘% 5d‘ % 10 + ‘\n‘ + ‘% 5d‘ % -10) 2 10 3 -10
加號(+),他表示不管是正數還是負數都標記出符號(同樣是在對齊時使用)
1 >>> print(‘%+5d‘ % 10 + ‘\n‘ + ‘%+5d‘ % -10) 2 +10 3 -10
python2.7之後支持使用format()方法對字符串進行格式化
1 >>> print("Hello, {}. {} enough for ya?".format(‘world‘,‘Hot‘)) 2 Hello, world. Hot enough for ya?
字符串方法
name = "my name is {name},i am is {ago}" print(name.capitalize()) #返回首寫字母大寫的字符串副本 print(name.count(‘m‘)) #返回指定字符串在整個字符串中出現的次數 print(name.center(50,‘+‘)) #根據長度對字符串兩端填充 print(name.endswith(‘mzc‘)) #判斷字符串的結尾,可以用作判斷郵箱地址 print(name.expandtabs(tabsize = 30)) #字符串中添加一個tab符,此方法用來指定tab符要空多少個字符 print(name.find(‘name‘)) #查找指定字符第一次出現的位置,並返回指定字符的索引 print(‘alex lil‘.rfind(‘l‘)) #查找指定字符最後一次出現的位置,並返回指定字符的索引 print(name.format(name=‘mzc‘)) #格式化字符串 print(name.format_map({‘name‘:‘mzc‘, ‘ago‘:‘18‘})) #和format方法一樣 print(‘abc123‘.isalnum()) #判斷是否為阿拉伯數字或字符 print(‘abcA‘.isalpha()) #判斷字符串是否為純英文字母 print(‘8998‘.isdecimal()) #判斷字符串是否為十進制 print(‘My Name Is Mzc‘.istitle()) #判斷字符串各個單詞首寫字母是否為大寫 print(‘na me‘.isidentifier()) #判斷字符串是否為合法標識符 print(‘123‘.isdigit()) #判斷一個字符串是否一個整數 print(‘My Name Is ‘.isprintable()) #tty file ,drive file print(‘My Name Is ‘.isupper()) #判斷字符串是否為大寫 print(‘My Name Is ‘.islower()) #判斷字符串是否為小寫 print(‘+‘.join( [‘1‘,‘2‘,‘3‘]) ) #使用單個元素將多個元素連接成字符串 print( name.ljust(50,‘*‘) ) #右填充 print( name.rjust(50,‘-‘) ) #左填充 print( ‘\nmzc‘.lstrip() ) #去除左邊空過或者換行 print( ‘mzc\n‘.rstrip() ) #去除右邊空過或者換行 print( ‘ mzc\n‘.strip() ) #去除左右兩邊空過或者換行 print( ‘Mzc‘.lower() ) #將字母轉換成小寫 print( ‘Mzc‘.upper() ) #將字母轉換成大寫 print("m z c".title()) #將各單詞的首寫字母轉換成大寫 -------------------------------------------------------------------------------------------------------------------- #字符串替換 >>> p = str.maketrans("abcdefli",‘[email protected]‘) #生成一個匹配關系,兩個參數中元素個數要相同 >>> print("lilianjie".translate(p) ) [email protected] print(‘alen li‘.replace(‘l‘,‘L‘,2)) #字符替換,可以指定替換的個數 print(‘1+2+3+4‘.split(‘+‘)) #根據指定字符分割字符串 print(‘a\nb\nc\nd\ne‘.splitlines()) #根據換行符或空格分割字符串 print(‘Spdir‘.swapcase()) #反轉字符串字母的大小寫 print(‘lex li‘.zfill(50)) #對字符串進行向左以數字0進行填充
python字符串操作