1. 程式人生 > >Python3字串各種內建函式詳解

Python3字串各種內建函式詳解



Python3訪問字串

    Python不支援單字元型別,單字元在Python中也是作為一個字串來使用;

    字串切片擷取;

空值

空值是Python裡一個特殊的值,用None表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。

最後,理解變數在計算機記憶體中的表示也非常重要。當我們寫:

a = 'ABC'

時,Python直譯器幹了兩件事情:

  1. 在記憶體中建立了一個'ABC'的字串;

  2. 在記憶體中建立了一個名為a的變數,並把它指向'ABC'

也可以把一個變數a賦值給另一個變數b

,這個操作實際上是把變數b指向變數a所指向的資料,例如下面的程式碼:

a = 'ABC'
b = a a = 'XYZ'
print(b)

最後一行打印出變數b的內容到底是'ABC'呢還是'XYZ'?如果從數學意義上理解,就會錯誤地得出ba相同,也應該是'XYZ',但實際上b的值是'ABC',讓我們一行一行地執行程式碼,就可以看到到底發生了什麼事:

執行a = 'ABC',直譯器建立了字串'ABC'和變數a,並把a指向'ABC'

執行b = a,直譯器建立了變數b,並把b指向a指向的字串'ABC'

執行a = 'XYZ',直譯器建立了字串'XYZ',並把a

的指向改為'XYZ',但b並沒有更改:

所以,最後列印變數b的結果自然是'ABC'了。

字元編碼

我們已經講過了,字串也是一種資料型別,但是,字串比較特殊的是還有一個編碼問題。

因為計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位元(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進位制11111111=十進位制255),如果要表示更大的整數,就必須用更多的位元組。比如兩個位元組可以表示的最大整數是65535,4個位元組可以表示的最大整數是4294967295。

由於計算機是美國人發明的,因此,最早只有127個字母被編碼到計算機裡,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母z的編碼是122。

但是要處理中文顯然一個位元組是不夠的,至少需要兩個位元組,而且還不能和ASCII編碼衝突,所以,中國製定了GB2312編碼,用來把中文編進去。

你可以想得到的是,全世界有上百種語言,日本把日文編到Shift_JIS裡,韓國把韓文編到Euc-kr裡,各國有各國的標準,就會不可避免地出現衝突,結果就是,在多語言混合的文字中,顯示出來會有亂碼。

>>> fruit='banana'
>>> letter=fruit[1] #從fruit中選擇索引為1的字元並將他賦給
letter
>>> letter'a'>>>

除了數字,Python還可以操縱字串,可以一幾種不同的方式表達。他們可以包含在單引號(‘...’)或者("...")雙引號中,其結果相同

>>> 'apple''apple'
>>> 'doesn\'t'  #可以用\’轉義字元
"doesn't"
>>> "doesn't"   #或者用兩個不一樣的引號
"doesn't"
>>> '"Yes,"he said'
'"Yes,"he said'
>>> "\"Yes,\"he said"
'"Yes,"he said'
>>> '"Isn\'t," seh said.'
'"Isn\'t," seh said.'

在互動式直譯器,輸出字串包含在引號和特殊字與反斜槓轉義。雖然這時有所不同,從輸入(包含引號可以改變),這兩個字串是一樣的。如果字串包含雙引號和單引號,該字串給括在雙引號中,否則被括在單引號中。print() 函式生成一個更可讀的輸出。\可用於轉義引號。

>>> '"Isn\'t"she said.''"Isn\'t"she said.'
>>> print('"Isn\'t"she said.')
"Isn't"she said.
>>> >>> s='First line.\nSecond line.' #\n表示換行=
>>> s'First line.\nSecond line.'
>>> print(s)First line.Second line.
>>>

如果你不想被\字首解釋為特殊字元,你可以使用原始字串之前的字串前加一個 r ;

>>> print('C:\some\name')
C:\some
ame
>>> print(r'C:\some\name') C:\some\name
>>>

字串連線

1:字串可以通過+或者*操作符連線;

>>> #重複3次‘un’之後,後面加上‘ium’
>>> 3*'um'+'ium'
'umumumium'
>>>

2:兩個或多個字串(封閉的引號隔開)相鄰之間自動連線;

>>> 'py''thon' #中間留不留空格效果一樣
'python'
>>>

注:這隻適用於兩個字串,而不是用於變數或者表示式;

>>> prefix='py'
>>> preix 'thon'
SyntaxError: invalid syntax
>>> ('un'*3)'ium'
SyntaxError: invalid syntax
>>>

3:如果你想連線兩個變數,使用+操作符可以實現

>>> prefix='py'
>>> prefix+'thon'
'python'
>>>

4:一下字串有其有用,當你想要打破輸入一個長字串;

>>> text=('My name is Anne,This is My page,'
'Welcome to my house!')
>>> text'My name is Anne,This is My page,Welcome to my house!'
>>> 

字串訪問

1:字串可以被索引(下標)訪問;沒有單獨的字元型別,一個字元就是一個
字串的大小;

>>> word='python'
>>> word[0]     #在位置0,word的第一個字元
'p'
>>> word[5]
'n'
>>>

2:索引也有可能是負數,從右邊開始計數;

>>> word[-1]
'n'
>>> word[-6]
'p'
>>>

注意:-0和0是一樣的,負數索引從零開始;

字串切片

>>> word[0:2]       #從零位置到2的字元

'py'

>>> word[2:5]
'tho'

>>>

注意:一開始總是被包括,最後總是被排除在外,這確保s[:i]+s[i:]總是等價於s

>>> word='python'

>>> word[:2]+word[2:]
'python'

>>> word[:4]+word[4:]
'python'

>>> word[:8]+word[:8]
'pythonpython'

>>> word[:1]+word[1:]
'python'>>>

切片索引可以使用預設值,s[:i]省略第一個索引預設為零;s[i:]省略第二個索引預設被切片的字串的大小。

試圖使用太大的索引將導致一個錯誤。

>>> word[89]    #word只有6個字母Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    word[89]IndexError: string index out of range
>>>

但是,此種情況下是可以使用切片的:

>>> word[2:89]
'thon'
>>>

上次已經說過Python字串不能改變——他們是不可變的。因此,指定字串中的索引位置導致一個錯誤。

>>> word[0]='J'Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    word[0]='J'TypeError: 'str' object does not support item assignment>>> word[2:]='py'Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    word[2:]='py'TypeError: 'str' object does not support item assignment>>> 'j'+word[1:]
'jython'
>>>

字串處理是非常常用的技能,但 Python 內建字串方法太多,常常遺忘,為了便於快速參考,特地依據 Python 3.5.1 給每個內建方法寫了示例並進行了歸類,便於大家索引。

PS: 可以點選概覽內的綠色標題進入相應分類或者通過右側邊欄文章目錄快速索引相應方法。

String Method 概覽

字串大小寫轉換

str.capitalize()
str.lower()
str.casefold()
str.swapcase()
str.title()
str.upper()

字串格式輸出

str.center(width[, fillchar])
str.ljust(width[, fillchar]);
str.rjust(width[, fillchar])
str.zfill(width)
str.expandtabs(tabsize=8)
str.format(^args, ^^kwargs)
str.format_map(mapping)

字串搜尋定位與替換

str.count(sub[, start[, end]])
str.find(sub[, start[, end]]); str.rfind(sub[, start[, end]])
str.index(sub[, start[, end]]); str.rindex(sub[, start[, end]])
str.replace(old, new[, count])
str.lstrip([chars]); str.rstrip([chars]); str.strip([chars])
static str.maketrans(x[, y[, z]]); str.translate(table)

字串的聯合與分割

str.join(iterable)
str.partition(sep);
str.rpartition(sep)
str.split(sep=None, maxsplit=-1);
str.rsplit(sep=None, maxsplit=-1)
str.splitlines([keepends])

字串條件判斷

str.endswith(suffix[, start[, 
            
           

相關推薦

Python3字串各種函式

● Python3訪問字串     Python不支援單字元型別,單字元在Python中也是作為一個字串來使用;     字串切片擷取; 空值 空值是Python裡一個特殊的值,用None表示。None不能理解為0,因為0是有

Python函式【翻譯自python3.6官方文件共68個】

翻譯源 來自:https://docs.python.org/3/library/functions.html  abs(x) 返回一個數的絕對值。引數可以是一個整數或一個浮點數。若引數是複數,返回複數的模 all(iterable) 若 可迭代物件中所有元素為真

python字串函式

概述 字串方法是從python1.6到2.0慢慢加進來的——它們也被加到了Jython中。 這些方法實現了string模組的大部分方法,如下表所示列出了目前字串內建支援的方法,所有的方法都包含了對Unicode的支援,有一些甚至是專門用於Unicode的。

python3函式

python內建了一系列的常用函式,以便於我們使用,python英文官方文件詳細說明:點選檢視, 為了方便檢視,將內建函式的總結記錄下來。 二. 使用說明    以下是Python3版本所有的內建函式: 1. abs()  獲取絕對值 1 >&g

第11天函式

參考部落格地址:https://www.cnblogs.com/sesshoumaru/p/6140987.html#p2 人生三問 什麼是內建函式  內建函式就是python直譯器給我們已經定義好的一系列函式,我們可以直接進行呼叫,而不必進行定義的。 為什麼要用內建函式  對於一些常用的功能,我們沒有必要

C++函式呼叫過程和函式

       上圖表示 函式呼叫過程:①程式先執行函式呼叫之前的語句;②流程的控制轉移到被呼叫函式入口處,同時進行引數傳遞;③執行被呼叫函式中函式體的語句;④流程返回呼叫函式的下一條指令處,將函式返回值帶回;⑤接著執行主調函式未執

awk 函式

本文承接上篇 linux awk 內建變數,本篇總結下awk內建函式。awk內建函式主機分為如下幾種:數學函式、字串函式、時間函式、其它函式。 一、數學函式 以下算術函式執行與 C 語言中名稱相同的子例程相同的操作: 函式名 說明 atan2( y, x )

Python函式——總結篇

#字串可以提供的引數 's' None >>> format('some string','s') 'some string' >>> format('some string') 'some string' #整形數值可以提供的引數有 'b' 'c' 'd' 'o'

Python函式

         置頂   內建函式詳解 https://docs.python.org/3/library/functions.html?highlight=built#ascii        此文參考了別人整理好的東西(地址:http://www.cnblogs.co

JS:部分函式

1,parseInt(String str) 主要將首位為數字的字串轉換成數字,如果不是以數字開頭,將返回NaN <!DOCTYPE html> <html> <head> <meta charset="UTF-8">

Hive 運算子 & 函式 -- 適合關鍵詞查詢

1.內建運算子 1.1關係運算符 運算子 型別 說明 A = B 所有原始型別 如果A與B相等,返回TRUE,否則返回FALSE A == B 無 失敗,因為無效的語法。 SQL使用”=”,不使用”==”。 A <> B 所有原始型別

Python3.5——模組之os模組、sys模組、shutil模組

1、os模組:提供對作業系統進行呼叫的介面 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu import os print(os.getcwd()) #獲取當前的操作目錄,即當前

Python3.5——模組之random模組

1、random模組基礎的方法 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu import random

Python的模組

一、什麼是模組   模組就是封裝了一些列功能的py檔案,我們使用的時候直接匯入這個檔案,通過傳入引數的方式使用其他檔案的功能函式 二、模組有哪些 內建模組 自定義模組 第三方模組 三、如何匯入模組   匯入模組分為4種: 1 #匯入模組 2 import mode_tes

python基礎--字串函式

1.   bit_length()  獲取對應字串的位元長度,就是在記憶體的長度 舉例: a = 5 b = a.bit_length() print(b) 3 2.  capitalize()   將首字母大寫  太簡單就不舉例了 3.  case

Python方法

  1. 簡介   本指南主題是 魔法方法 。   所以,為了修復我感知的Python文件的缺陷,我開始提供更為通俗的,有示例支援的Python魔法方法指南。我一開始 寫了一些博文,現在我把這些博文總起來成為一篇指南。   希望你喜歡這篇指南,一篇友好,通俗易懂的Python魔法方法指南!   2.

php字串常用函式

學習函式的大綱 1.作用 2.語法 3.示例 文章目錄 字串常用函式分類 1.字串長度函式 2.查詢字串位置函式 3.字串替換函式 4.提取字串字元函式 5.分割,連線,反轉函式

vue指令

指令是Vue模板中最常用的一項功能,它帶有字首v-,主要職責是當其表示式的值改變時,相應的將某些行為應用在 DOM 上。這篇文章主要介紹了vue內建指令詳解,需要的朋友可以參考下 指令 (Directives) 是帶有 v- 字首的特殊屬性, 職責是,當表示式的值改變時,將其產生的連帶影響,響應式地作用於

JavaWeb學習----JSP物件---九大內物件沒cook JavaWeb學習----JSP物件

JavaWeb學習----JSP內建物件詳解 JSP共有以下9大內建物件: out request response session pageContext application config page exception 文章連結 -

python3 元組函式

Python3 元組 Python 的元組與列表類似,不同之處在於元組的元素不能修改。 元組使用小括號,列表使用方括號。 元組建立很簡單,只需要在括號中新增元素,並使用逗號隔開即可。 例項(Python 3.0+) >>>tup1 = ('Goog