python文字處理

2021-07-05 10:17:50 字數 3719 閱讀 6767

基本的文字操作:

在python中,可以用下列方式表現乙個文字字串'',""

'this

is a literal

string'

out[1]: 'this

is a literal

string'

"this is a literal string"

out[2]: 'this

is a literal

string'

使用3引用符,無須在文字中加入換行和續行。按原貌儲存。

bigger = """

this is an even

bigger string that

spans three lines

"""

在字串面前加r或r,表示該字串是乙個真正的「原」字串,在字串前面加乙個u或u使之成為乙個unicode

big = r"this is a long string \

with a backslash and a newline in it"

hello = u'hello\u0020world'

s.isdigit()

s.upper()

s.count('needle')

呼叫內建list,用字串作為引數:thelist = list(thestring)

for語句完成遍歷:

for c in thestring:

do_something_with(c)

results = [do_something_with(c) for c in thestring]

用map函式處理:results = map(do_something, thestring)

內建函式chr,str,ord,unichr

print ord('a')

97print chr(97)

aprint ord(u'\u2002')

8194

print repr(unichr(8224))

u'\u2020'

print map(ord, 'dxlmaoe')

[100, 120, 108, 109, 97, 111, 101]

利用內建的isinstance和basestring 來簡單快速檢查某個物件是否是字串或者unicode物件

def

isastring

(anobj):

return isinstance(anobj, basestring)

或許還有型別測試的方法:

def

i***actlyastring

(anobj):

return type(anobj) is type('')

然而unicode物件無法通過。basestring 是 str和unicode型別的共同基類。但是python標準庫中的userstring類的例項,是無能為力的。

def

isstringlike

(anobj):

try: anobj + ''

except: return

false

else: return

true

python中通常的型別檢查方法是所謂的鴨子判斷法:如果它走路像鴨子,叫聲也像鴨子,那麼對於我們的應用而言,就可以認為它是鴨子。

實現字串對齊:左對齊,居中對齊,或者右對齊

print '|','hej'.ljust(20),'|','hej'.rjust(20),'|','hej'.center(20),'|'

| hej | hej | hej |

print 'hej'.center(20, '+')

++++++++hej+++++++++

獲得乙個開頭和末尾都沒有多餘空格的字串

x = '  hej  '

print '|',x.lstrip(), '|', x.rstrip(), '|', x.strip(), '|'

| hej | hej | hej |

x = 'xyxxyy hejyx yyx'

print '|'+x.strip('xy')+'|'

| hejyx |

有一些小的字串,想把這些字串合併成乙個大字串。

largestring = ''.join(pieces)

largestring = '%s%s something %s yet more'%(smal11,small2, sma113)

largestring = sma111+sma112+'something' + smal13+'yet more'

import operator

largestring = reduce(operator.add, pieces, '')

把字串逐字元或逐詞反轉過來。

revchars =astring[::-1]
revwords = astring.split()

revwords.reverse()

revwords = ''.join(revwords)

revwords = ' '.join(astring.split()[::-1])

如果想逐詞反轉但又同時不改變原先的空格,可以用正規表示式來分隔原字串:

import re

revwords = re.split(r'(\s+)', astring)

revwords.reverse()

revwords = ''.join(revwords)

或者也可以這樣寫:revwords = ''.join(re.split(r'(\s+)', astring)[::-1])

def

containsany

(seq, aset):

for c in seq:

if c in aset: return

true

return

false

import itertools

defcontainsany

(seq, aset):

for item in itertools.ifilter(aset.__contains__, seq):

return

true

return

false

python 文字處理

我們談到 文字處理 時,我們通常是指處理的內容。python 將文字檔案的內容讀入可以操作的字串變數非常容易。檔案物件提供了三個 讀 方法 read readline 和 readlines 每種方法可以接受乙個變數以限制每次讀取的資料量,但它們通常不使用變數。read 每次讀取整個檔案,它通常用於...

python文字處理

日常操作中,少不了文字處理,如程式輸入資料準備,python憑藉其簡潔優雅的語法,在文字處理上比c 等編譯型語言開發效率高出一大截。檔案操作示例 輸入檔案 f open r d python27 pro 123.bak 輸出檔案 fw open r d python27 pro 123e.bak w...

python文字處理

日常操作中,少不了文字處理,如程式輸入資料準備,python憑藉其簡潔優雅的語法,在文字處理上比c 等編譯型語言開發效率高出一大截。檔案操作示例 輸入檔案 f open r d python27 pro 123.bak 輸出檔案 fw open r d python27 pro 123e.bak w...