【新手筆記】一文教你玩轉Python字符串全能用法

2021-12-13 Python新手快速入門
它是不可變的、有限字符序列,包括可見字符、不可見字符(如空格符等)和轉義字符。在爬蟲中經常對字符串進行操作,包括 URL 拼接、格式化、數據處理(替換、去除空白、截取等),所以字符串的常規操是需要熟練掌握的。Python 通過 str 類型提供大量方法來操作字符串,如字符串的替換、刪除、截取、複製、連接、比較、查找、分隔等。使用type獲取創建對象的類 type(name)find()在字符串中查找指定字符串,找不到時返回-1:

name = "zhangsan"isIn = name.find("an")print(isIn)


index()在字符串中查找指定的字符串,找不到時直接報錯:

name = "zhangsan"isIn = name.index('h')print(isIn)

name = "zhangsan"name1 = "zhangsan"isEq = name.__eq__(name1)print(isEq)

name = "zhang san"name = name.split()print(name)

name = "{} {} zhangsan" name = name.format('I', 'am')print(name)

name = "zhangsan"name = '*'.join(name)print(name)


isalnum()判斷字符串是否包含字母數字字符:

name = "zhangsan1"isTrue = name.isalnum()print(isTrue)
name = "zhangsan1*"isTrue = name.isalnum()print(isTrue)

name = "zhangsan"isTrue = name.isalpha()print(isTrue)
name = "zhangsan1"isTrue = name.isalpha()print(isTrue)


startswith()判斷字符串以某個字符串開頭,返回boolean類型:

name = "zhangsan"isTrue = name.startswith("zh")print(isTrue)


endswith()判斷字符串以某個字符串結尾,返回boolean類型:

name = "zhangsan"isTrue = name.endswith("san")print(isTrue)

1) re.match嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。

import re line="this hdr-biz 123 model server 456"pattern=r"123"matchObj = re.match( pattern, line)


2)re.search掃描整個字符串並返回第一個成功的匹配。

import re line="this hdr-biz model server"pattern=r"hdr-biz"m = re.search(pattern, line)


3)Python 的re模塊提供了re.sub用於替換字符串中的匹配項。

import re line="this hdr-biz model args= server"patt=r'args='name = re.sub(patt, "", line)


4)compile 函數用於編譯正則表達式,生成一個正則表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用。

import re pattern = re.compile(r'\d+')


5)re.findall 在字符串中找到正則表達式所匹配的所有子串,並返回一個

import re line="this hdr-biz model args= server"patt=r'server'pattern = re.compile(patt)result = pattern.findall(line)


6)re.finditer和 findall 類似,在字符串中找到正則表達式所匹配的所有

import re it = re.finditer(r"\d+","12a32bc43jf3")for match in it:  print (match.group() )

在 Python 字符串中如果顯示特殊字符,必須經過轉義才能夠顯示。例如,換行符需要使用 \n 表示,制表符需要使用 \t 表示,單引號需要使用 \' ,雙引號需要使用 \" 表示等等。

>>> a = 'I\nlove\nU'>>> a'I\nlove\nU'>>> print(a)IloveU>>> print('aaabb\cccddd')aaabbcccddd

編程中關於字符串大小寫轉換的情況,經常會遇到,這裡大概總結如下:
為了方便學習,先設定一個測試變量:a = 「gaoqi love programming, loveSXT」返回一個長度為width,兩邊用fillchar(單字符)填充的字符串。即字符串str居中,兩邊用fillchar填充。若字符串的長度大於width,則直接返回字符串str。
語法:str.center(width , "fillchar") -> str 返回字符串

width:指定字符串長度;

fillchar:要填充的單字符,默認為空格;

str = "i love python"print(str.center(20,"*")) print(str.center(1,"*")) print(str.center(20,"8"))print(str.center(20)) 

***i love python****i love python888i love python8888   i love python

返回一個原字符串左對齊,並使用fillchar填充(默認為空格)至指定長度的新字符串,如果指定的長度小於原字符串的長度則返回原字符串。語法:str.ljust(width, fillchar) -> str 返回一個新的字符串

width:指定字符串的輸出長度;

fillchar:將要填充的單字符,默認為空格;

str = "python"print(str.ljust(30,"*")) print(str.ljust(30))  print(str.ljust(30),"1") 

python************************python                        python                         1

返回一個原字符串右對齊,並使用fillchar填充(默認為空格)至指定長度的新字符串,如果指定的長度小於原字符串的長度則返回原字符串。

str = "python"print(str.rjust(30,"*")) print(str.rjust(30))  print("1",str.rjust(30)) 

************************python                        python1                         python

返回指定長度的字符串,使原字符串右對齊,前面用0填充到指定字符串長度。
語法:str.zfill(width) -> str 返回一個字符串width:指定字符串的長度,但不能為空;若指定長度小於字符串長度,則直接輸出原字符串。

str = "i love python"print(str.zfill(30)) print(str.zfill(2)) print(str.zfill()) 

00000000000000000i love pythoni love pythonTypeError                                 Traceback (most recent call last)<ipython-input-22-45e4baf7a246> in <module>()      2 print(str.zfill(30))       3 print(str.zfill(2))  TypeError: zfill() takes exactly 1 argument (0 given)

統計字符串裡某個字符出現的次數,可以選擇字符串索引的起始位置和結束位置。str.count("char", start,end) 或 str.count("char") -> int 返回整數str —— 為要統計的字符(可以是單字符,也可以是多字符)。star —— 為索引字符串的起始位置,默認參數為0。end —— 為索引字符串的結束位置,默認參數為字符串長度即len(str)。
str = "i love python,i am learning python"print(str.count("i")) print(str.count("i",2)) print(str.count("i",2,5)) print(str.count("am"))  


在編碼轉換時,通常以 Unicode 作為中間碼,即先將一種類型的字符串解碼(decode)成 Unicode,再從 Unicode 編碼(encode)成另一種類型的字符串。使用字符串對象的 encode()方法可以根據參數 encoding 指定的編碼格式將字符串編碼為二進位數據的字節串。

str.encode(encoding='UTF-8', errors='strict')

str 表示字符串對象:參數 encoding 表示要使用得編碼類型,默認為 UTF-8 ,參數 errors 設置不同錯誤的處理方案,默認為 strict,表示遇到非法字符就會拋出異常。

其他取值包括 ignore(忽略非法字符)、replace(用 ? 替換非法字符)、xmlcharrefreplace (使用 XML 的字符引用)、backslashreplace ,以及通過 codecs.register_error() 註冊的任何值。

使用 encode()方法對中文字符串進行編碼示例:

u = "中文"str1 = u.encode("gb2312")print(str1)str2 = u.encode("gbk")print(str2)str3 = u.encode("utf-8")print(str3)

與 encode() 方法操作相反,使用 decode()方法可以解碼字符串。即根據參數 encoding 指定的編碼格式將二進位數據的字節串解碼為字符串。

str.decode(encoding='UTF-8', errors='strict')


str 表示被 decode()解碼的字節串,該方法的參數與 encode()方法的參數用法相同,最後返回解碼後的字符串。

u = "中文"str1 = u.encode("gb2312")u1 = str1.decode("gb2312")print(u1)  u2 = str1.decode("utf-8")  """報錯如下:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte"""


encode()和decode()方法的參數編碼格式必須一致,否則將拋出上面代碼所

字符串在python部的表示是unicode編碼。所以在做編碼轉換時,需要先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。將其他編碼的字符串轉換成unicode編碼,如string1.decode('utf-8'),表示將utf-8編碼的字符串string1轉換成unicode編碼。將unicode編碼轉換成其他編碼的字符串,如string2.encode('utf-8'),表示將unicode編碼的字符串string2轉換成utf-8編碼。如果一個字符串已經是unicode了,再進行解碼則將出錯,因此通常要對其編碼方式是否為unicode進行判斷:
isinstance(string3, unicode) #用來判斷string3是否為unicode編碼
用非unicode編碼形式的string3來encode也會報錯;

import sysprint sys.getdefaultencoding()  

string4="你好" if isinstance(string4, unicode): print s.encode('gb2312') else: print s.decode('utf-8').encode('gb2312')

面試中問到的python 字符串轉換為int類型的兩種方法;

a = "100"
a = int(a)print(a)print(type(a))

print(type(eval(a)))


import string str='555'num=string.atoi(str)

最後:

歡迎關注「Python新手快速入門

每天5分鐘,學習一個Python小Tip! 助力你成為更優秀的Python學習者~

相關焦點

  • Python字符串(Python學習筆記02)
    字符串Python 3 中的字符串可以使用雙引號或單引號標示,如果字符串出現引號,則可以使用 來去除引號標示字符串的作用。如果需要輸入多行字符串,可以使用 「」」 三個雙引號:str6 = 「」」 hello, world 「」」支持使用 + 連接字符串:str1 + 『 『 + str2索引字符串是字符得有序集合,可以通過其位置來獲得具體的元素。
  • python格式化字符串研究
    前言與隊友交流時提及python的格式化字符串漏洞,這個漏洞之前接觸不多,所以寫篇文章從基礎部分仔細研究了研究。python環境是python3.7。雖然效果一樣,但是在python web的開發中一般認為前者比後者要安全,因為後者可能會因為自身支持的一些特殊用法導致配置信息等的洩露。首先,format形式的格式化字符串基本用法如下:"I am {1},he is {0}".format("a","b")這個語句的輸出是I am b,he is a,大括號{}中的數字代表了format的變量順序。
  • 對比python字符串函數,學習pandas的str矢量化字符串函數
    文章來源:數據分析與統計學之美作者:黃偉呢python字符串應該是python裡面最重要的數據類型了,因此學會怎麼處理各種各樣的字符串,顯得尤為重要。我們不僅要學會怎麼處理單個字符串,這個就需要學習「python字符串函數」,我們還要學會怎麼處理二維表格中每一列每一格的字符串,這個就需要學習「pandas的str矢量化字符串函數」。今天我們採用對比的方式,帶大家總結常用的字符串函數,希望這篇文章能夠對大家起到很好的作用。
  • 對比python字符串函數,輕鬆學習pandas的 str 矢量化字符串函數
    1.概述python字符串應該是python裡面最重要的數據類型了,因此學會怎麼處理各種各樣的字符串,顯得尤為重要。我們不僅要學會怎麼處理單個字符串,這個就需要學習「python字符串函數」,我們還要學會怎麼處理二維表格中每一列每一格的字符串,這個就需要學習「pandas的str矢量化字符串函數」。今天我們採用對比的方式,帶大家總結常用的字符串函數,希望這篇文章能夠對大家起到很好的作用。
  • Python中字符串的操作處理
    學習了字符串的基本用法和簡單格式化,我們再來看一下常用字符串類型的操作。對字符串,Python提供了3個基本的操作符,如下表:演示如下:>>> x = '一個'>>> y = '字符串'>>> x+y'一個字符串'>>> x*3'一個一個一個'>>> s = '某個字符串'>>>
  • 一文看懂Python列表、元組和字符串操作
    列表由一系列元素組成,所有的元組被包含在一對方括號中。列表被創建將後,可以執行添加、刪除、修改操作。列表中可包含任意的Python數據信息,如字符串、數字、列表、元組等。1.1 列表介紹列表是有序集合,沒有固定大小,能夠保存任意數量任意類型的 Python 對象,語法為 [元素1, 元素2, ..., 元素n]。
  • Python格式化字符串(格式化輸出)
    我們在《第一個Python程序——在屏幕上輸出文本》中講到過 print() 函數的用法,這只是最簡單最初級的形式,print() 還有很多高級的玩法
  • python中字符串的基本操作匯總
    字符串是文本操作的核心,在python中字符串是string類的實例,在string模塊中,定義了很多的常量>>> import string>>> string.ascii_letters'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  • Go語言學習筆記之字符串一
    Go語言是一個年輕人,身上擁有c++,java,python等語言的特點。在網絡通信、並發和並行編程擁有極好的體驗,當然不僅僅在這上上面,還有網絡編程,web應用,應用下載等有著非常大的潛力。\ fmt.Println("\nContains函數判斷字符串包含關係:") str4 := "Ajian loves python and goland" fmt.Println(str4) fmt.Println(strings.Contains(str4,"jian")) //Index 函數是返回某字符在字符串的下標,在字符串裡面返回下標,否則-1(註:返回的是首次出現的下標)
  • 零基礎如何使用python處理字符串?
    字符串是作為任意一門程式語言的基礎,在Python中的關鍵字叫做str。而本文對字符串的操作都是建立在數據是字符串而言,可以通過內置函數type()來測試一組數據是否是字符串。官方標準庫有一個獨立的文件叫string.py,對字符串的一些常量和方法進行了定義。新手不用去查閱,應先知其然,不用知其所以然,否則學習的動力瞬間煙消雲散,深奧晦澀的術語直接讓你蒙圈。
  • Python拼接字符串的七種方式
    公眾號Python貓, 專注python技術、數據科學和深度學習,力圖創造一個有趣又有用的學習分享平臺。忘了在哪看到一位編程大牛調侃,他說程式設計師每天就做兩件事,其中之一就是處理字符串。相信不少同學會有同感。幾乎任何一種程式語言,都把字符串列為最基礎和不可或缺的數據類型。而拼接字符串是必備的一種技能。今天,我跟大家一起來學習Python拼接字符串的七種方式。
  • 你真的知道 Python的 字符串是什麼嗎?
    》這篇推文裡,我提到過,字符串是程式設計師離不開的事情。這篇內容可能會很基(li)礎(lun),並不是什麼「騷操作」或「冷知識」,權當是一份溫故而求知新的筆記。1 Python字符串是什麼?根據維基百科定義:字符串是由零個或多個字符組成的有限序列。
  • python數據類型總結——數字和字符串
    python中,定義了五個標準的數據類型,分別是數字,字符串,列表,元組,字典。它們足以幫助你完成對生活中絕大部分事物的特徵描述。python數字數字是不可變的。比如說,你可以通過python計算 100000 ** 100000,只要你有足夠的時間和耐心。我就計算一下10 ** 100吧,畢竟我怕老。
  • 給妹子講python-S01E08理清python中的字符編碼方法
    容器遍歷和列表解析式給妹子講python-S01E05字符串的基本用法給妹子講python-S01E06字符串用法進階給妹子講python-S01E07字符編碼歷史觀:從ASCII到Unicode【要點搶先看】1.python中編、解碼的本質是文本字符串和字節字符串的相互轉換
  • [快學Python3]String(字符串)
    下面我們如何用不同的引號來創建字符串:a = u'我是字符串'b = u"我是字符串"c = """我是字符串我是字符串我還是字符串"""由上面看出,三引號括起來的字符串可以有多行。字符串內置函數在python中字符串內置函數提供了各種字符串處理能力,下面我們看幾個常用的函數應用示例:字符連接和切割在python中提供了以下函數完成連接和切割功能:下面我們看看具體的代碼示例:
  • Python數據類型之字符串
    # 字符串是python中最常用的數據類型,我們可以使用引號來創建字符串,引號可以是單引號,雙引號或三引號,本質上單引號和雙引號以及三引號的作用是一樣的 # 字符串是一種不可變的序列類型,單個字符從左到右按照順序排列,同時修改某個位置的字符是不被允許的 #
  • Python語言中字符串的拆分,連接及拼接
    字符串拆分Python語言中,字符串是以str對象的形式表示的,是不可變的:這意味著不能直接更改內存中的對象。 記住這兩個特點將會幫助您學習(並且記住)如何使用.split( )。您猜到字符串的這兩個特徵是如何與Python語言中的拆分功能相關的嗎?
  • 詳解 Python 拼接字符串的 7 種方式
    幾乎任何一種程式語言,都把字符串列為最基礎和不可或缺的數據類型。而拼接字符串是必備的一種技能。今天,我跟大家一起來學習Python拼接字符串的七種方式。1、來自C語言的%方式print('%s %s' % ('Hello', 'world'))>>> Hello world%號格式化字符串的方式繼承自古老的C語言,這在很多程式語言都有類似的實現。上例的%s是一個佔位符,它僅代表一段字符串,並不是拼接的實際內容。
  • Python兩種基本數據類型:數值及字符串;python交互式運行環境
    裡面用到很多python編程的知識點。筆者覺得有必要解釋一下。編程需要大量數據,為了編程方便,數據就分成了不同的類型,不同的數據類型有不同的特性。Python兩種基本數據類型python語言中,有兩種最基本的數據類型:數值類型及字符串類型。
  • Python如何定義變量,不可變數據,數字、字符串、元組詳解
    String(字符串):Python中的字符串用單引號或雙引號括起來。建議如果字符串裡面有單引號最外面用雙引號,字符串裡面有雙引號用單引號。如果都是用單引號或者雙引號,字符串裡面有單引號、雙引號或者特殊字符需要用\反斜槓轉義。