python 字符串提取信息方法總結(jié)

在日常項目中,我們經(jīng)常會使用python從字符串中提取我們想要的信息,以下是各種提取信息方法的總結(jié)。


字符串簡單截取(字符串切片)

格式:str[beg:end:step]
描述:字符串[開始索引:結(jié)束索引:步長]切取字符串為開始索引到結(jié)束索引-1內(nèi)的字符串步長不指定時步長為1

參數(shù):

  • beg -- 開始索引,默認為0。
  • end -- 結(jié)束索引,默認為字符串的長度。
  • step -- 步長。

舉例:
print(str[::2]) //::這里表示整個字符串,每兩個位置提取一個
print(str[1:3]) //提取第2個到第3個
print(str[2::]) //截取2 - 末尾的字符


常用的Python內(nèi)置的字符串處理函數(shù)

本小節(jié)介紹了,處理字符串經(jīng)常用到的一些函數(shù)方法。

1 str.find()

語法:str.find(str, beg=0, end=len(string))
描述:Python find() 方法檢測字符串中是否包含子字符串 str ,如果指定 beg(開始) 和 end(結(jié)束) 范圍,則檢查是否包含在指定范圍內(nèi),如果包含子字符串返回開始的索引值,否則返回-1。

參數(shù):

  • str -- 指定檢索的字符串
  • beg -- 開始索引,默認為0。
  • end -- 結(jié)束索引,默認為字符串的長度。
find

2 str.split()

語法:str.split(str="", num=string.count(str)).
描述:Python split() 通過指定分隔符對字符串進行切片,如果參數(shù) num 有指定值,則分隔 num+1 個子字符串.返回分割后的字符串列表,該方法可以講字符串轉(zhuǎn)化為列表處理。

參數(shù):

  • str -- 分隔符,默認為所有的空字符,包括空格、換行(\n)、制表符(\t)等。
  • num -- 分割次數(shù)。默認為 -1, 即分隔所有。

另外的:str.splitlines([keepends])按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果參數(shù) keepends 為 False,不包含換行符,如果為 True,則保留換行符。

舉例:str.split(' ')

3 str.partition()

語法:str.partition(str)
描述:partition() 方法用來根據(jù)指定的分隔符將字符串進行分割。如果字符串包含指定的分隔符,則返回一個3元的元組,第一個為分隔符左邊的子串,第二個為分隔符本身,第三個為分隔符右邊的子串。

參數(shù):

  • str : 指定的分隔符
舉例str.partition()

4 str.replace()

語法:str.replace(old, new, max)
描述:Python replace() 方法把字符串中的 old(舊字符串) 替換成 new(新字符串),如果指定第三個參數(shù)max,則替換不超過 max 次。

參數(shù):

  • old -- 將被替換的子字符串。
  • new -- 新字符串,用于替換old子字符串。
  • max -- 可選字符串, 替換不超過 max 次
舉例str.replace()

5 str.strip()

語法:str.strip([chars]);
描述:Python strip() 方法用于移除字符串頭尾指定的字符(默認為空格或換行符)或字符序列。:該方法只能刪除開頭或是結(jié)尾的字符,不能刪除中間部分的字符。

參數(shù):

  • chars -- 移除字符串頭尾指定的字符序列。
舉例

6 str.join()

語法:str.join(sequence)
描述:Python join() 方法用于將序列中的元素以指定的字符連接生成一個新的字符串。

參數(shù):

  • sequence -- 要連接的元素序列。
str.join()

上述方法還有其變形,如str.rfind(),這代表從字符串右邊開始處理,正常是從左邊開始處理。下表是其它常用的python字符串自帶函數(shù)方法。

方法 描述
string.capitalize() 把字符串的第一個字符大寫
string.center(width) 返回一個原字符串居中,并使用空格填充至長度 width 的新字符串
string.count(str, beg=0, end=len(string)) 返回 str 在 string 里面出現(xiàn)的次數(shù),如果 beg 或者 end 指定則返回指定范圍內(nèi) str 出現(xiàn)的次數(shù)
string.isalnum() 如果 string 至少有一個字符并且所有字符都是字母或數(shù)字則返回 True,否則返回 False
string.isalpha() 如果 string 至少有一個字符并且所有字符都是字母則返回 True,否則返回 False
string.isdecimal() 如果 string 只包含十進制數(shù)字則返回 True 否則返回 False.
string.isdigit() 如果 string 只包含數(shù)字則返回 True 否則返回 False.
string.islower() 如果 string 中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是小寫,則返回 True,否則返回 False
string.isnumeric() 如果 string 中只包含數(shù)字字符,則返回 True,否則返回 False
string.isspace() 如果 string 中只包含空格,則返回 True,否則返回 False.
string.istitle() 如果 string 是標題化的(見 title())則返回 True,否則返回 False
string.isupper() 如果 string 中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是大寫,則返回 True,否則返回 False
string.ljust(width) 返回一個原字符串左對齊,并使用空格填充至長度 width 的新字符串
string.lower() 轉(zhuǎn)換 string 中所有大寫字符為小寫.
string.lstrip() 截掉 string 左邊的空格
string.swapcase() 翻轉(zhuǎn) string 中的大小寫
string.upper() 轉(zhuǎn)換 string 中的小寫字母為大寫

3 正則表達式

正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。本小節(jié)主要介紹Python中常用的正則表達式處理函數(shù)和正則表達式的書寫規(guī)則。
re 模塊使 Python 語言擁有全部的正則表達式功能。所以在python中使用正則表達式處理函數(shù)需要import re

1 re.search()

語法:re.search(pattern, string, flags=0)
描述:re.search 掃描整個字符串并返回第一個成功的匹配。匹配成功re.search方法返回一個匹配的對象,否則返回None。

參數(shù):

  • pattern -- 匹配的正則表達式
  • string -- 要匹配的字符串。
  • flags -- 標志位,用于控制正則表達式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。
re.search

2 re.search()

語法:re.sub(pattern, repl, string, count=0, flags=0)
描述:Python 的 re 模塊提供了re.sub用于替換字符串中的匹配項。

參數(shù):

  • pattern : 正則中的模式字符串。
  • repl : 替換的字符串,也可為一個函數(shù)。
  • string : 要被查找替換的原始字符串。
  • count : 模式匹配后替換的最大次數(shù),默認 0 表示替換所有的匹配。
re.search()

3 re.findall()

語法:pattern.findall(string, pos, endpos)
描述:在字符串中找到正則表達式所匹配的所有子串,并返回一個列表,如果沒有找到匹配的,則返回空列表。注意: match 和 search 是匹配一次 findall 匹配所有。

參數(shù):

  • string : 待匹配的字符串。
  • pos : 可選參數(shù),指定字符串的起始位置,默認為 0。
  • endpos : 可選參數(shù),指定字符串的結(jié)束位置,默認為字符串的長度。
re.findall()

正則表達式模式

模式字符串使用特殊的語法來表示一個正則表達式:

  • 字母和數(shù)字表示他們自身。一個正則表達式模式中的字母和數(shù)字匹配同樣的字符串。
  • 標點符號只有被轉(zhuǎn)義時才匹配自身,否則它們表示特殊的含義。
  • 反斜杠本身需要使用反斜杠轉(zhuǎn)義。
    下表列出了正則表達式模式語法中的特殊元素。如果你使用模式的同時提供了可選的標志參數(shù),某些模式元素的含義會改變。
模式 描述
^ 匹配字符串的開頭
$ 匹配字符串的末尾。
. 匹配任意字符,除了換行符,
[...] 用來表示一組字符,單獨列出:[amk] 匹配 'a','m'或'k'
[^...] 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
* 匹配0個或多個的表達式。
+ 匹配1個或多個的表達式。
? 匹配0個或1個由前面的正則表達式定義的片段,非貪婪方式
{ n} 精確匹配 n 個前面表達式。o{2} 不匹配 "Bob" ,匹配 "food" 。
{ n,} 匹配 n 個前面表達式。 "o{1,}" 等價于 "o+"。"o{0,}" 則等價于 "o*"。
{ n, m} 匹配 n 到 m 次由前面的正則表達式定義的片段,貪婪方式
\w 匹配字母數(shù)字及下劃線
\W 匹配非字母數(shù)字及下劃線
\s 匹配任意空白字符,等價于 [ \t\n\r\f]。
\S 匹配任意非空字符
\d 匹配任意數(shù)字,等價于 [0-9].
\D 匹配任意非數(shù)字
\A 匹配字符串開始
\Z 匹配字符串結(jié)束,如果是存在換行,只匹配到換行前的結(jié)束字符串。
\z 匹配字符串結(jié)束
\G 匹配最后匹配完成的位置。
\b 匹配一個單詞邊界,例如, 'er\b' 可以匹配"never" 中的 'er'
\B 匹配非單詞邊界。'er\B' 能匹配 "verb" 中的 'er'.
  • 例子
  • [Pp]ython:匹配 "Python" 或 "python"
  • rub[ye]:匹配 "ruby" 或 "rube"
  • [aeiou]:匹配中括號內(nèi)的任意一個字母
  • [0-9]:匹配任何數(shù)字。類似于 [0123456789]
  • [a-z]:匹配任何小寫字母
  • [A-Z]:匹配任何大寫字母
  • [a-zA-Z0-9]:匹配任何字母及數(shù)字
  • [^aeiou]:除了aeiou字母以外的所有字符
  • [a-zA-Z0-9]{2}:精確匹配兩個任何字母及數(shù)字
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容