python字符串字面量有哪四种定义方式_Python学习笔记(四)字符串型
字符串是 Python 中最常用的數據類型。我們可以使用引號('或")來創建字符串。
在最新的Python 3版本中,字符串是以Unicode編碼的,也就是說,Python的字符串支持多語言。
創建字符串很簡單,只要為變量分配一個值即可
View Code
對于單個字符的編碼,Python提供了ord()函數獲取字符的整數表示,chr()函數把編碼轉換為對應的字符
View Code
如果知道字符的整數編碼,還可以用十六進制這么寫str:
1 >>> '\u4e2d\u6587'
2 '中文'
由于Python的字符串類型是str,在內存中以Unicode表示,一個字符對應若干個字節。如果要在網絡上傳輸,或者保存到磁盤上,就需要把str變為以字節為單位的bytes。
Python對bytes類型的數據用帶b前綴的單引號或雙引號表示
1 >>> x = b'ABC'
2
3 >>>type(x)
4
注意區分'ABC'和b'ABC',前者是str,后者雖然內容顯示得和前者一樣,但bytes的每個字符都只占用一個字節。
以Unicode表示的str通過encode()方法可以編碼為指定的bytes,例如:
1 >>> 'ABC'.encode('ascii')
2 b'ABC'
3
4 >>> '中文'.encode('utf-8')
5 b'\xe4\xb8\xad\xe6\x96\x87'
6
7 >>> '中文'.encode('ascii')
8 Traceback (most recent call last):
9 File "", line 1, in
10 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
純英文的str可以用ASCII編碼為bytes,內容是一樣的,含有中文的str可以用UTF-8編碼為bytes。含有中文的str無法用ASCII編碼,因為中文編碼的范圍超過了ASCII編碼的范圍,Python會報錯。
在bytes中,無法顯示為ASCII字符的字節,用\x##顯示。
反過來,如果我們從網絡或磁盤上讀取了字節流,那么讀到的數據就是bytes。要把bytes變為str,就需要用decode()方法:
1 >>> b'ABC'.decode('ascii')
2 'ABC'
3
4 >>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
5 '中文'
要計算str包含多少個字符,可以用len()函數:
1 >>> len('ABC')
2 3
3 >>> len('中文')
4 2
len()函數計算的是str的字符數,如果換成bytes,len()函數就計算字節數:
1 >>> len(b'ABC')
2 3
3 >>> len(b'\xe4\xb8\xad\xe6\x96\x87')
4 6
5 >>> len('中文'.encode('utf-8'))
6 6
可見,1個中文字符經過UTF-8編碼后通常會占用3個字節,而1個英文字符只占用1個字節。
在操作字符串時,我們經常遇到str和bytes的互相轉換。為了避免亂碼問題,應當始終堅持使用UTF-8編碼對str和bytes進行轉換。
由于Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存為UTF-8編碼。當Python解釋器讀取源代碼時,為了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行:
1 #!/usr/bin/env python3
2 #-*- coding: utf-8 -*-
第一行注釋是為了告訴Linux/OS X系統,這是一個Python可執行程序,Windows系統會忽略這個注釋;
第二行注釋是為了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。
申明了UTF-8編碼并不意味著你的.py文件就是UTF-8編碼的,必須并且要確保文本編輯器正在使用UTF-8 without BOM編碼
如果.py文件本身使用UTF-8編碼,并且也申明了# -*- coding: utf-8 -*-,打開命令提示符測試就可以正常顯示中文
訪問字符串中的值
Python訪問子字符串,可以使用方括號來截取字符串
1 >>> v1 = 'Hello World'
2 >>> v2 = "Hello Python"
3
4 >>> print("v1[0] is %s" %v1[0])
5 >>> print("v2[1:5] is %s" % v2[1:5])
6
7
8 v1[0] isH
9 v2[1:5] is ello
在需要在字符中使用特殊字符時,python用反斜杠(\)轉義字符
轉義字符
描述
\(在行尾時)
續行符
\\
反斜杠符號
\'
單引號
\"
雙引號
\a
響鈴
\b
退格(Backspace)
\e
轉義
\000
空
\n
換行
\v
縱向制表符
\t
橫向制表符
\r
回車
\f
換頁
\oyy
八進制數,yy代表的字符,例如:\o12代表換行
\other
其它的字符以普通格式輸出
\xyy
十六進制數,yy代表的字符,例如:\x0a代表換行
字符串運算符
變量a值為字符串"Hello",b變量值為"Python"為例:
操作符
描述
實例
+
字符串連接
a + b 輸出結果: HelloPython
*
重復輸出字符串
a*2 輸出結果:HelloHello
[]
通過索引獲取字符串中字符
a[1] 輸出結果 e
[ : ]
截取字符串中的一部分
a[1:4] 輸出結果 ell
in
成員運算符 - 如果字符串中包含給定的字符返回 True
H in a 輸出結果 1
not in
成員運算符 - 如果字符串中不包含給定的字符返回 True
M not in a 輸出結果 1
r/R
原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思來使用,沒有轉義特殊或不能打印的字符。 原始字符串除在字符串的第一個引號前加上字母"r"(可以大小寫)以外,與普通字符串有著幾乎完全相同的語法。
print r'\n' 輸出 \n 和 print R'\n' 輸出 \n
%
格式字符串
實例:
View Code
執行結果為:
View Code
總結
以上是生活随笔為你收集整理的python字符串字面量有哪四种定义方式_Python学习笔记(四)字符串型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人群疏散matlab程序,人群疏散方法及
- 下一篇: 电脑下载的M4A格式文件怎么转换为MP3