Python中必須掌握的常用字符串處理函數

引言

字符串作爲一種常見的數據類型,在日常中我們面臨各式各樣的字符串處理問題,那麼,這就要求我們必須掌握一些常用的字符串處理函數。本文儘量囊括常用的字符串處理函數,此文也作爲個人的小總結。

Python中常用的字符串處理函數

find()

  • 功能:
    檢測字符串是否包含特定字符,如果包含,則返回開始的索引;否則,返回-1。
  • 示例:
## find()函數
str = 'hello world'
# 'wo'在字符串中
print( str.find('wo') )
# 'wc'不在字符串中
print( str.find('wc') )
## 輸出:
##     6
##     -1

index()

  • 功能:
    檢測字符串是否包含指定字符,如果包含,則返回開始的索引值;否則,提示錯誤。

  • 示例:

## index()函數
str = 'hello world'
# 'wo'在字符串中
print( str.index('wo') )
# 'wc'不在字符串中,程序報錯ValueError,終止運行
print( str.index('wc') )
## 輸出:
##     6
##     ValueError: substring not found

count()

  • 功能:
    返回str1在string中指定索引範圍內[start, end)出現的次數。

  • 示例:

## count()函數
str = 'hello world'
# 統計str中全部字母l的個數
print( str.count('l') )
# 統計str中從第5+1個字母到最後一個字母中,字母l的個數
print( str.count('l', 5, len(str)) )
## 輸出:
##     3
##     1

replace()

  • 語法:
    str1.replace(str2, count)
  • 功能:
    將str1中的str1替換成str2,如果指定count,則不超過count次;
  • 示例:
## replace()函數
print('=*'*10, 'replace()函數', '=*'*10)
str = 'hello world hello world'
str1 = 'world'
str2 = 'waltsmith'
# 將所有的str1替換爲str2
print( str.replace(str1, str2) )
# 只將前1個str1替換爲str2
print( str.replace(str1, str2, 1) )
## 輸出:
##     hello waltsmith hello waltsmith
##     hello waltsmith hello world

split()

  • 語法:
    str.split('分界符', maxSplit)
    maxSplit默認值爲-1,表示根據定界符分割所有能分割的;
    返回值爲列表;
  • 功能:
    如果 maxsplit有指定值,則僅分割 maxsplit 個子字符串;
  • 示例:
## split()函數
str3 = 'I am a good boy!'
# 以空格分割字符串,分界符默認爲空格
print(str3.split(' ', 3))
# 以字母o作爲分界符,指定最大分割爲2,將返回最大分割+1個元素的列表
print(str3.split('o', 2))

## 輸出:
##     ['I', 'am', 'a', 'good boy!']
##     ['I am a g', '', 'd boy!']

capitalize()

  • 語法:
    str.capitalize()
    無參數;
  • 功能:
    將字符串的首字母大寫,其餘字母全部小寫
  • 示例:
## capitalize()函數
str4 = 'I aM waLt smith'
# 字符串的首字母大寫,其餘字母全部小寫
print(str4.capitalize())
## 輸出:
##     I am walt smith

title()

  • 語法:
    str.title()
    無參數;
  • 功能:
    將字符串中的所有單詞的首字母大寫,其餘字母全部小寫;
    值得注意的是,這裏單詞的區分是以任何標點符號區分的,即,標點符號的前後都是一個獨立的單詞,字符串最後一個標點除外哦。詳細看示例哈
  • 示例:
## title()函數
# 正常字符串的轉換
str5 = "I am walt smith!"
print(str5.title())
## 輸出:
##     I Am Walt Smith!
# 字符中包含標點符號
str6 = "I'm walt-sMith!"
print(str6.title())
## 輸出:
##    I'M Walt-Smith!

注意:
也許你也看到了,”I’m walt-sMith!”轉換後,“I’M Walt-Smith!”這句話並不是我們想要的結果。這個呢,是時候秀一下正則表達式了。
以下示例通過正則表達式實現:”I’m walt-sMith!”轉換爲“I’m Walt-Smith!”

  • title()修正示例:
## 修正title()
import re
def titlecase(s):
    return re.sub(r"[A-Za-z]+('[A-Za-z]+)?",
                  lambda mo: mo.group(0)[0].upper() +
                             mo.group(0)[1:].lower(), s)
str7 = "I'm walt's friend!"
print(titlecase(str7))

## 輸出:
##    I'm Walt's Friend!

startswith()

  • 語法:
    str.startswith(str1)
  • 功能:
    檢查字符串str是否 以字符串str1開頭,若是,則返回True;否則,返回False;
  • 示例:
## startswith()函數
str8 = "Hello Walt Smith"
print(str8.startswith("Hello"))
## 輸出:
##    True

lower()

  • 語法:
    str.lower()
    無參數;
  • 功能:
    將字符串的所有字母轉換爲小寫;
  • 示例:
## lower()函數
print('=*'*10, 'lower()函數', '=*'*10)
str10 = "Hello Walt Smith"
print(str10.lower())
## 輸出:
##     hello walt smith

upper()

  • 語法:
    str.upper()
    無參數;
  • 功能:
    將字符串的所有字母轉換爲大寫;
  • 示例:
## upper()函數
str10 = "Hello Walt Smith"
print(str10.upper())
## 輸出:
##     HELLO WALT SMITH

endswith()

  • 語法:
    str.endswith(str1)
  • 功能:
    檢查字符串str是否 以字符串str1結尾,若是,則返回True;否則,返回False;
  • 示例:
## endswith()函數
str9 = "Hello Walt Smith"
print(str9.endswith("Smith"))
## 輸出:
##     True

ljust()

  • 語法:
    str.ljust(len)
  • 功能:
    將字符串左對齊,並使用空格填充至指定長度len;
  • 示例:
## ljust()函數
str10 = "Hello Walt Smith"
print("str10的原長度爲%d" % (len(str10)))
print("str10處理後的長度爲%d" % (len(str10.ljust(20))))
## 輸出:
##     str10的原長度爲16  
##     str10處理後的長度爲20

rjust()

  • 語法:
    str.rjust(len)
  • 功能:
    將字符串右對齊,並使用空格填充至指定長度len;
  • 示例:
## rjust()函數
str11 = "Hello Walt Smith"
print(str11.rjust(20))
print("str11的原長度爲%d" % (len(str11)))
print("str11處理後的長度爲%d" % (len(str11.ljust(20))))
## 輸出:
##     ☐☐☐☐Hello Walt Smith
##     str11的原長度爲16
##     str11處理後的長度爲20

center()

  • 語法:
    str.center(len)
  • 功能:
    將字符串居中,並使用空格填充至指定長度len;
  • 示例:
## center()函數
str12 = "Hello Walt Smith"
print(str12.center(20))
print("st12的原長度爲%d" % (len(str12)))
print("str12處理後的長度爲%d" % (len(str12.center(20))))
## 輸出:
##     ☐☐Hello Walt Smith☐☐
##     str12的原長度爲16
##     str12處理後的長度爲20

lstrip()

  • 語法:
    str.lstrip()
  • 功能:
    去掉字符串左邊的空白字符;
  • 示例:
## lstrip()函數
str13 = "   Hello Walt Smith   "
print(str13.lstrip())
## 輸出:
##     Hello Walt Smith☐☐☐

rstrip()

  • 語法:
    str.rstrip()
  • 功能:
    去掉字符串右邊的空白字符;
  • 示例:
## rstrip()函數
str13 = "   Hello Walt Smith   "
print(str13.rstrip())
## 輸出:
##     ☐☐☐Hello Walt Smith

strip()

  • 語法:
    str.strip()
  • 功能:
    去掉字符串左右兩邊的空白字符;
  • 示例:
## strip()函數
str13 = "   Hello Walt Smith   "
print(str13.strip())
## 輸出:
##     Hello Walt Smith

partition()

  • 語法:
    str.partition(str1)
  • 功能:
    根據str中的第一個str1,將字符串str分割爲str1之前,str1和str1之後三個部分;若str1不存在,則將str作爲第一部分,後面兩個元素爲空;返回元組;
  • 示例:
## partition()函數
str14 = "Are you believe in yourself?"
# "yourself"在字符串中
print(str14.partition("yourself"))
# "you"在字符串中有兩個
print(str14.partition("you"))
# "walt"不在字符串中
print(str14.partition("walt"))
## 輸出:
##     ('Are you believe in ', 'yourself', '?')
##     ('Are ', 'you', ' believe in yourself?')
##     ('Are you believe in yourself?', '', '')

join()

  • 語法:
    str.join(iterable)
  • 功能:
    將iterable中每兩個相鄰元素中間插入字符串str,返回形成的新的字符串;
  • 示例:
## join()函數
str15 = "walt"
print(str15.join("ABC"))
iterable = ['YOU', 'THEY', 'WE']
print(str15.join(iterable))
## 輸出:
##     AwaltBwaltC
##     YOUwaltTHEYwaltWE

isspace()

  • 語法:
    str.isspace()
    無參數;
  • 功能:
    如果字符串str中只包含空格,則返回True;否則,返回False;
  • 示例:
## isspace()函數
str16 = " t "
print(str16.isspace())
## 輸出:
##     False

isdigit()

  • 語法:
    str.isdigit()
    無參數;
  • 功能:
    如果字符串str中只包含數字,則返回True;否則,返回False;
  • 示例:
## isdigit()函數
str16 = "14250"
print(str16.isdigit())
## 輸出:
##     True

isalpha()

  • 語法:
    str.isalpha()
    無參數;
  • 功能:
    如果字符串str中只包含字母,則返回True;否則,返回False;
  • 示例:
## isalpha()函數
str17 = "HardWorking"
print(str17.isalpha())
## 輸出:
##     True

===================未完待續==============

結語

能力有限,非常歡迎指錯、補充。麼麼噠♥♥♥
===================歡迎關注個人微信公衆號WaltSmithML或新浪微博WaltSmith,本人主要方向爲機器學習和深度學習。非常熱烈歡迎一起交流學習哈,除了學習,還可免費幫忙download論文或者書籍哈==============
♥♥♥♥♥♥♥♥♥♥♥♥微信公衆號WaltSmithML二維碼♥♥♥♥♥♥新浪微博WaltSmith二維碼♥♥♥♥♥♥♥♥♥♥

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章