天天看點

Python3學習筆記 | 四、Python的類型與運算-字元串(上)一、字元串簡介二、字元串常量1、轉義2、raw印制轉義三、字元串操作1、len()2、合并字元串3、順序提取字元4、判斷存在字元5、字元串分片6、字元串轉換7、字元串序列

一、字元串簡介

在Python裡字元串是一個有序的字元的集合,用來存儲和表現基于文本的資訊。字元串可以用來表示能夠像文本那樣編輯的任何資訊:符号和詞語、在入道記憶體中的文本的内容、Internet網址和Python程式等。

在Python裡字元串被劃分為不可變序列這一類别,這意味着這些字元串所包含的字元存在從左至右的位置順序,并且他們不可以在遠處修改。字元串在Python裡屬于一個序列類型的對象類别,在後面介紹的清單,元組都是序列類型。在這章對文本的操作,很多都能應用于序列類型的對象類别。

二、字元串常量

在Python裡有很多種方法來表示字元串:

• 單引号:’Text”1”‘

• 雙引号:”Text’1’”

• 三引号:’’’…Lines…’’’,”””…Lines…”””.

• 轉義字元:”Line1\tadded tab\nLine2”

• Raw字元串:r”C:\My\new\Directory\file.exe”

• Python 3.x中的Byte字元串:b’Te\x01xt’

• Python 2.x中的Unicode字元串:u’my\u0020text’

在Python 3.x裡預設是使用Unicode方式存儲字元串,在Python 2.x裡預設是使用Latin-1方式存儲字元串,是以不能直接識别中文。

# -*- encoding=utf8 -*-           

複制

在Python2.x腳本檔案加上上面一句話就能正常使用中文。

1、轉義

跟其他開發語言相通,Python也有轉義字元:(反斜杠)

當我們在一個字元串裡需要同時使用單引号(‘)和雙引号(“)的時候,根據我們所使用的表示字元串的引号類型進行轉義。

>>>'a"b\'c'           

複制

在這裡,我們要輸入的字元串為a”b’c。

因為我們使用單引号來表示字元串的開始和結尾,是以b後面的單引号需要轉義。當我們使用雙引号來表示字元串,我們需要在雙引号前面使用反斜杠進行轉義:

>>>s = "a\"b'c"           

複制

除了這兩個,我們還有很多反斜杠加上單個字元來進行轉義的。

\newline:忽視新行(連續)#newline就是按鍵盤上的enter(或return)

\ :反斜杠,因為反斜杠本身就是轉義字元,是以兩個反斜杠才能表示一個。

\’ :單引号

\”:雙引号

\a:響鈴

\b:倒退(一位)

\f:換頁(下一頁,同一列。特定終端下可用。)

\n:新行(換行)

\r :傳回(傳回到開始)

\t :水準制表符

\v :垂直制表符

\uhhhh:Unicode 16位的十六進制值

\Uhhhhhhhh:Unicode 32位的十六進制值

\xhh:十六進制值

\ooo:八進制值

\0:Null(不是字元串結尾)

\other:不轉義

轉義測試:

>>> print('a\0b\0c')
a b c
>>> print('t\te\ex\t\ta\an\nd\dEND')
t       e\ex            an
d\dEND
>>> print('\u0043')
C
>>> print('\U00000043')
C           

複制

2、raw印制轉義

在Python裡我們有的時候是需要印制轉義的。比如,當有個Windows的目錄如下:

>>> print('C:\newfile\files')
C:
ewfileiles           

複制

這個時候,要是按正常來說,\n和\f都會被轉移,但我們寫雙斜杠又麻煩,這個時候可以使用raw字元串來印制轉義。

>>> print(r'C:\newfile\files')
C:\newfile\files           

複制

這個時候其值會跟寫的完全一樣,當然,我們也可以寫成如下:

>>> print('C:\\newfile\\files')
C:\newfile\files           

複制

但是還是沒有使用印制轉義友善,特别是在路徑很長的時候。

三、字元串操作

1、len()

在Python裡有很多函數,可以對字元串進行操作:len()是看字元串長度的。

>>> print(len('小小哆啦'))
4           

複制

當我們使用unicode的時候,按中文字元的個數顯示,但使用python2.x裡的預設

字元編碼,就會是三倍的數值。

因為Python3開始,預設字元編碼是unicode,是以在Python3.x裡是沒有問題的。

2、合并字元串

字元串合并,重複等,跟數字的操作類似:

>>> 'Dora'+'Emon'
'DoraEmon'
>>> 'Dora'*7
'DoraDoraDoraDoraDoraDoraDora'           

複制

這裡的第二個操作可以為我們節省很多字元輸入,比如我們需要輸入如下:

>>> print('-----……-----')     #80個“-”
-----……-----           

複制

這個可以使用如下方法簡單實作:

>>> print('-'*80)
-----……-----           

複制

當需要字元合并的時候,如下方法也可以,但不建議使用。

>>> 'Dora''Emon'
'DoraEmon'
>>> 'Dora' 'Emon'
'DoraEmon'           

複制

3、順序提取字元

當我們需要對每個字元串進行操作的時候,可以如下進行操作:

>>> for DaXiong in 'DoraEmon':
...     print(DaXiong,end=' ')
...
D o r a E m o n           

複制

這個意思是,我們從a字元串(序列)裡按順序提取字元,進行操作。關于循環,後面在函數章節講解。

4、判斷存在字元

我們需要知道某個字元是否在一個字元串的時候,可以使用in或者not in來判斷:

>>> 'D' in 'DoraEmon'
True
>>> 'D'not in 'DoraEmon'
False
>>> 'X' in 'DoraEmon'
False           

複制

5、字元串分片

我們也可以對字元串分片,比如對DoraEmon,我們隻需要第一個字元,第三個字元,或者中間兩個字元,後兩個字元等等。

>>> Dora='DoraEmon'
>>> Dora[1],Dora[5],Dora[-3]
('o', 'm', 'm')
>>> Dora[1:5]
'oraE'
>>> Dora[-5:-1]
'aEmo'
>>> Dora[3:]
'aEmon'
>>> Dora[:-5]
'Dor'
>>> Dora[:]
'DoraEmon'           

複制

看一下在Python裡對字元串的分段是如何進行的,例如:text=“ThisIsTestText”

Python3學習筆記 | 四、Python的類型與運算-字元串(上)一、字元串簡介二、字元串常量1、轉義2、raw印制轉義三、字元串操作1、len()2、合并字元串3、順序提取字元4、判斷存在字元5、字元串分片6、字元串轉換7、字元串序列

提取單個字母時,需使用字母前的數字。比如:h,就是1或者-13,提取範圍時是開始字母的前面的數字到最後字母的後面數字。比如h到x,就是[1,13]或者[-13,13]或者[1,-1]或者[-13,-1],從開始到某個字母就可以[:3];從某個字幕到結尾就是[3:]。

分片操作還可以有第三個參數,間隔。我們要第一個字母開始,每隔一個字母顯示,結果應該是“DrEo”

>>> Dora='DoraEmon'
>>> Dora[::2]
'DrEo'           

複制

或者從第二個字母開始:

>>> Dora[1::2]
'oamn'           

複制

或者我們要倒過來:

>>> Dora[::-1]
'nomEaroD'
>>> Dora[-1:1:-1]
'nomEar'           

複制

6、字元串轉換

當我們需要對字元串大小寫等操作的時候,需要對字元串轉換成相應的代碼。這個時候我們就需要兩個函數:ord和chr,ord是把一個字元轉換成數字,chr是把數字轉換成單個字元。

>>> ord('D')
68
>>> chr(68)
'D'
>>> ord('小')
23567
>>> chr(23567)
'小'           

複制

注:在Python3.x裡可以直接使用中文字元,但是在Python2.x就不能直接用了。

Python3學習筆記 | 四、Python的類型與運算-字元串(上)一、字元串簡介二、字元串常量1、轉義2、raw印制轉義三、字元串操作1、len()2、合并字元串3、順序提取字元4、判斷存在字元5、字元串分片6、字元串轉換7、字元串序列

用這兩個函數,可以對字元串轉換進行簡單的大小寫操作了,比如:把一個字元串裡的内容全轉換成大些:

>>> DORA=''  #初始化DORA
>>> Dora='DoraEmon'  #設定Dora
>>> for DaXiong in Dora:  #循環,按順序提取Dora字元串内容
...     DaXiong_code=ord(DaXiong)  #字元轉換成ascII碼
...     if 97<=DaXiong_code and DaXiong_code <=122:  #當值大于等于97(a的值)或小于等于122(z的值)
...         DORA+=chr(DaXiong_code-32)  #在值的基礎上減32(大小寫之間的差距)
...     else:...         DORA+=DaXiong  #其餘情況不變
...
>>> DORA
'DORAEMON'           

複制

7、字元串序列

在Python裡字元串算是序列,但是字元串是不可修改的對象,是以如下操作不能正常被執行:

>>> Dora='DoraEmon'
>>> Dora[3]='DaXiong'
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment           

複制

但是我們可以重新給原來的變量指派:

>>> Dora='DaXiong'+Dora[3:]
>>> Dora
'DaXiongEmon'           

複制