python之字串處理 2014 4 5

2022-09-16 10:54:14 字數 3295 閱讀 7742

#字串 p62 13:20pm-15:20

上一章講的所有的序列化操作對於字串同樣適用

不過字串不可變 所以無法使用分片賦值

1.字串格式化

>>> format="hello,%s,%s ok"

>>> values=('ww','xx')

>>> print format % values

hello,ww,xx ok

%s代替values裡面的值 貌似%s不能改為$x

s表示字串

格式化浮點數

%.3f .3表示精度 f表示型別 float

>>> format="pi with three decimals:%.3f"

>>> from math import pi

>>> print format %pi

pi with three decimals:3.142

字串格式化 完整版

如果右運算元是元組的話 則其中每乙個元素都會被單獨格式化 每個值都需要乙個對應的轉換說明符

(1)%字元標記轉換說明符的開始

(2)轉換標誌(可選)-左對齊 表示在轉換值之前加上正負號;""(空白字元)表示正數之前要保留空格;0表示轉換值如果位數不夠用0填充

(3)最小字段寬度 轉換後的字串至少應該有該值指定的寬度

(4)點(.)後跟精度值

(5)轉換型別

d,i 帶符號的十進位制整數

0 不帶符號的八進位制

u不帶符號的十進位制

x 不帶符號的16進製制(小寫)

x 不帶符號的16進製制(大寫)

e 科學計數法表示的浮點數(小寫)

c單字元(接受整數或者單字元字串)

r 字串(使用repr轉換任意python物件)

s 字串(使用str轉換任意python物件)

簡單轉換

只要寫出轉換型別 使用起來非常簡單

>>> 'price of eggs :$%d'%42

'price of eggs :$42'

字段寬度和精度

>>> '%20f'%pi #欄位寬20

' 3.141593'

>>> '%20.2f'%pi #欄位寬20 精度為2

' 3.14'

可以用*作為字段寬度或者精度

>>> '%.*s'%(5,'guido van')

'guido'

符號 對齊和0填充

>>> '%010.2f'%pi

'0000003.14'

#0填充

>>> '%-10.2f'%pi

'3.14 '

#左對齊 多餘空格在右 預設是空格在左

>>> print('%10d'%10)

10>>> print('%10d'%-10)

-10空白'%10d'可以用來對齊

>>> print('%+5d'%10)

+10>>> print('%+5d'%-10)

-10數字都加上正負號

4.字串方法

find 查詢子字串最左端的索引 若無 返回-1

>>> t='hello i love your love'

>>> t.find('love')

8#find還可以指定起點和終點範圍

>>> t='love i love your love love'

>>> t.find('love')

0>>> t.find('love',1)

7>>> t.find('love',2)

7>>> t.find('love',8)

17>>> t.find('love',8,30)

17join在佇列中新增元素 split的逆方法

>>> seq=['1','2','3']

>>> sep="+"

>>> sep.join(seq)

'1+2+3'

注意符號的位置 在前 而且元素必須是字串

>>> dir='','usr','bin'

>>> '/'.join(dir)

'/usr/bin'

lower返回字串的小寫字母版

>>> 'heello woeld'.lower()

'heello woeld'

查詢姓名 或者驗證碼的時候 比較有用不管輸入大小寫都可以

>>> 'hello oli'.title()

'hello oli'

#首字母大寫

replace返回某字串的所有匹配項均被替換之後得到字串

>>> 'this is a test'.replace('is','eez')

'theez eez a test'

split 與join相反 用來將字串分隔成序列

>>> '1+2+3'.split('+')

['1', '2', '3']

如果不提供任何分隔符 程式會把所有空格作為分隔符

strip返回去除兩側空格的字串

>>> ' hello world '.strip()

'hello world'

也可指定某個字元去除

'hello'.strip(ll)

translate 類似於replace 替換 但是 translate只處理單個字元 優勢在於同時進行多個替換 有時候比replace效率高得多

使用之前 需要先建一張轉換表 使用string模組的maketrans函式

from string import maketrans

table=maketrans('cs','kz')#接受2個引數

轉換表是包含替換的ascii字符集中256個字元的替換字母的字串

>>> from string import maketrans

>>> table=maketrans('cs','kz')

>>> len(table)

256>>> table[97:123]

'abkdefghijklmnopqrztuvwxyz'

>>> maketrans('','')[97:123]

'abcdefghijklmnopqrstuvwxyz'

以上建好轉換表 以下轉換

>>> 'this is an test'.translate(table)

'thiz iz an tezt'

第二個引數可以刪除指定的字元 比如空格

>>> 'this is an test'.translate(table," ")

'thizizantezt'

字串處理之 字串雜湊

字串雜湊,非常非常好用nb的方法,雖然有一定概率會翻車 翻車概率極低 但是這個是真的nb,你如果會這個在大多數場合可以避免掉有一些演算法的學習,比如馬拉車演算法,你學馬拉車只能處理回文字串,雖然馬拉車是o n 但在非極端測試點的情況下我們可以用字串雜湊來偷雞,字串雜湊簡單好用,比kmp簡單很多。km...

Python 字串處理

python endswith 方法用於判斷字串是否以指定字尾結尾,如果以指定字尾結尾返回 true 否則返回 false 可選引數 start 與 end 為檢索字串的開始與結束位置。語法 endswith 方法語法 str.endswith suffix start end 引數 返回值 如果字...

Python字串處理

去空格及特殊符號 s.strip lstrip rstrip 複製字串 strcpy sstr1,sstr2 sstr1 strcpy sstr2 sstr1 sstr1 strcpy2 print sstr2連線字串 strcat sstr1,sstr2 sstr1 strcat sstr1 ss...