c++ string分割字符串split_python 字符串和文本处理
字符串和文本處理
字符串是一種重要的數(shù)據(jù)形式,有價值的程序都會涉及到對于字符串的處理。幸運的是,強大的python內(nèi)置了很多函數(shù),來幫助我們解析和處理字符串。本文會涉及到字符串編碼,簡單的字符串處理函數(shù)。
字符串編碼
在 Python3 中,文本總是 Unicode, 由 str 類型進行表示,二進制數(shù)據(jù)使用 bytes 進行表示。不會出現(xiàn)python2種將 str 與 bytes 偷偷的混在一起的情況,使得兩者的區(qū)別更加明顯[1]。
我們知道,計算機儲存的都是二進制信息,二進制信息有很多種編碼方式來表示字符,有的編碼方式叫BIG-5,有的編碼方式叫GBK,有的編碼方式叫UTF-8,不一而足。
在python3中,默認的編碼方式是UTF-8。python內(nèi)置了可以處理字符串的decode()函數(shù)和encode()函數(shù),decode()函數(shù)將其它編碼的字符串轉(zhuǎn)化為UTF-8,encode()函數(shù)將UTF-8編碼轉(zhuǎn)化為其它編碼[2]。
拼接字符串
使用+拼接少量字符串,形式簡潔,速度很快。比如:
>>> string_1 = "Hello">>> string_2 = "World">>> string = string_1 + string_2>>> print(string)HelloWorld對于已知值的字符串,可以依次打出其值并賦值給一個字符串變量,也可以實現(xiàn)字符串的連接。
# 無需加號的連接>>> string_3 = "Hello" "World">>> print(string_3)HelloWorld隨著字符串數(shù)量的增多,字符串連接的效率會迅速降低[3]。這時就需要使用join()方法,它本質(zhì)上是一個函數(shù)。join()是專屬于字符串的一種方法,字符串后面只要加上一個點,就能夠使用該方法。
>>> parts = ['Is', 'Chicago', 'Not', 'Chicago?']# 用空格連接>>> ' '.join(parts)'Is Chicago Not Chicago?'# 用逗號連接>>> ','.join(parts)'Is,Chicago,Not,Chicago?'# 不使用任何字符,直接連接>>> ''.join(parts)'IsChicagoNotChicago?'多個需要連接的字符串,一般會放在列表里面。然后使用join()方法連接。注意,在','.join(parts)中,parts表示待連接的字符串,逗號意味著:每個字符串之間用逗號連接。
拆分字符串
字符串的分割需要用到split()方法,它也是python的內(nèi)置函數(shù),專門用于拆分字符串。函數(shù)split()只接受一個參數(shù),這個參數(shù)決定了字符串應(yīng)該在何處拆分。
>>> line = 'Is Chicago Not Chicago?'# 用逗號分隔>>> parts = line.split(' ')>>> print(parts)['Is', 'Chicago', 'Not', 'Chicago?']# 拆分和連接是互逆的,先拆分后連接,還是原來的字符串>>> ' '.join(line.split(' ')) == lineTrue如果想在多個字符處分隔應(yīng)該怎么辦呢?聰明的你不難想到,多次使用split()方法,每次使用不同的字符。具體見下面的例子:
現(xiàn)在我們還沒有學到列表連接的方法,暫且使用+。和字符串的連接類似,用+連接列表也會有性能問題,這時需要用到append()方法,感興趣的同學可以查閱相關(guān)資料。
首尾字符過濾
首尾字符過濾用strip()方法,strip()默認過濾掉空格' '和換行```,也可以指定過濾的字符。具體可以看下面的例子:
# 默認過濾首尾空格和換行符號>>> line = ' Hello, world! '>>> line.strip()'Hello, world!'# 過濾掉'?'>>> line = 'Is Chicago Not Chicago?'>>> line.strip('?')'Is Chicago Not Chicago'字符的查找和替換
查找的方法是find(),用法和上面的類似,具體用法請看下面的例子。
>>> line = 'Hello, world!'>>> line.find('o')4123find()方法,從字符串的開頭開始尋找目標字符,遇到第一個符合的字母就停止尋找,并返回該字符的序號。
# 根據(jù)空格和字母c,拆分字符串line>>> line = 'Is Chicago Not Chicago?'>>> part_1 = line.split(' ')>>> print(part_1)['Is', 'Chicago', 'Not', 'Chicago?']>>> part_2 = []>>> for index in part_1:···part_2 = part_2 + index.split('c')>>> print(part_2)['Is', 'Chi', 'ago', 'Not', 'Chi', 'ago?']替換的方法是:replace(),基本的使用格式是:字符串.replace(參數(shù)1, 參數(shù)2),參數(shù)1表示要被替換的字符,參數(shù)2表示替換成的字符。具體見下面的例子:
>>> line = 'Hello, world!'>>> line.replace('', '')'Hello, world!'# 一次性替換全部>>> line.replace('o', 'a')'Hella, warld!'replace()方法不是惰性的,它會把所有符合條件的字符都替換成目標字符。
總結(jié)
思考
# 根據(jù)一種字符串分隔字符只需要用split()方法# 兩次使用split()方法也可以實現(xiàn)按兩種字符分隔字符串# 請編寫一個函數(shù),將任意一個字符串按任意兩個字符分隔# 比如輸入字符串:'Hello, welcome to congge python'# 分隔參數(shù):空格和英文逗號# 輸出:['Hello', 'welcome', 'to', 'congge', 'python']def my_split(string, character1, character2): array = string.split(character1) output = [] for i in array: output = output + i.split(character2) return output總結(jié)
以上是生活随笔為你收集整理的c++ string分割字符串split_python 字符串和文本处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: csv指的是什么文件格式
- 下一篇: Cacls如何显示或修改任意访问控制列表