1. 程式人生 > >字符串和字符編碼unicode

字符串和字符編碼unicode

ascii表 構造 backspace body 切片 abcde tab 映射 每次

python基礎第三天

字符串 str

作用:
用來記錄文本(文字)信息,給人類識別用的,為人們提供註釋解釋說明
表示方式:
在非註釋中,凡是用引號括起來的部分都是字符串
‘ 單引號
" 雙引號
‘‘‘ 三單引號
""" 三雙引號
空字符串的字面值表示方法
‘‘
""
‘‘‘
"""
單引號和雙引號的區別:
  單引號的內的雙引號不算結束符
  雙引號的內的單引號不算結束符
擴展:因為解釋執行器根據單引號為開始符往後找單引號作為結束符,要是雙引號為開始符,往後找到雙引號結束為止。


三引號字符串的作用:多行字符串
三引號字符串中的換行會自動轉換為換行符
三引號內可以包含單引號和雙引號
示例:

1 s = welcome to beijing!\nI like python!\nI am Studing!
2 print(s)

隱式字符串字面值連接:註意:只用常量值才可以

1 s = "I‘m a tencher!" My name is liuzhihua
2 >>> s
3 "I‘m a tencher!My name is liuzhihua"

如果一個字符串同時包含如下字符該怎麽辦?

用轉義序列代表特殊字符
字符串字面值中,用字符反斜杠(\)
後跟一些字符代表特殊的一個字符
反斜杠轉義字符表:
\‘ 單引號
\" 雙引號
\‘‘‘ 三單引號
\""" 三雙引號
\\ 一個反斜杠
\n 換行
\r 返回光標至首行
示例:

1 >>> print(ABCD\rab)
2 abCD

\t 水平制表符(有的終端默認4空格,有的默認8個空格)

\v 垂直制表符
\f 換頁
\b 倒退
\0 空字符,字符值為空
\xXX XX為兩位十六進制表示的字符 ASCII編碼:ASCII表:$ man ascii
示例:print(‘\x41‘,‘\x42‘) 輸出 A B
常用的ASCII編碼:(0-127共128個(十進制))
字符 十進制 十六進制
‘0‘ --‘9‘ 48 --57 0x30--0x39
‘A‘ --‘Z‘ 65 --90 0x41--0x5a
‘a‘ --‘z‘ 97 --122 0x61--0x7a

Unicode

同一編碼:分為Unicode16字符和Unicode32字符
\uXXXX XXXX個十六進制表示的Unicode16字符2**16=65536(0-65535)
\UXXXXXXXX 8個X十六進制表示的Unicode32字符2**32
計算機存儲文字,是以圖片形式保持,用整數返回
序列的概念
字符串就是序列
求序列的長度函數len
len(x) 返回字符串的字符個數

raw 字符串(原始字符串)
格式:
r‘字符串內容‘
r"字符串內容"
r‘‘‘字符串內容‘‘‘
r"""字符串內容"""
作用:
讓轉義符號\ 無效

在Python中,由“r”開頭的作用=字符串的原始含義

dos = r"c:\news"

“例如r"c:\news",由r開頭引起的字符串就是聲明了後面引號裏的東西是原始字符串,在裏面放任何字符都表示該字符的原始含義。

這種方法在做網站設置和網站目錄結構的時候非常有用,使用了原始字符串就不需要轉義了。”

示例:

1 s = C:\newfile\test.py
2 print(s)
3 print(len(s))
4 
5 s = rC:\newfile\test.py
6 print(s)
7 print(len(s))

字符串的運算:
+ 加號運算符用於拼接字符串
* 運算符用於生產重復的字符串
示例:

1 s = "ABC" +"DEF" # s = "ABCDEF"
2 s1 = 123 * 3 # s1 = ‘123123123‘


註:同類型的數據才能相加,相乘只能和整數相乘

in / not in 運算符

作用:
用於判斷某個字符串是否在當前字符串中出現過,如果出現過返回True,否則返回False。
擴展:字符串只要完整在當前字符串出現過就返回True

語法:
對象 in 字符串
示例:
s = ‘welcome to tarena‘
‘to‘ in s # True
‘wei‘ in s # False
‘welc‘ in s # True
字符串的比較運算
運算符:
> >= < <= == !=
規則:
依次從左到右按編碼值進行比較,直到最短字符串結束為止。
比較的它們在計算機內數字編碼(ASCII編碼),比較出結果就不在比較。
示例:

1 a < b #True 
2 abc < abd #True 
3 a < ab #True 
4 abc < acb #False 
5 a > 1232443545 #True 
6 a > ASAADASDAAS #True

字符串的索引操作(index)

索引

語法:
字符串[整數表達式]
說明:
Python序列都可以用索引來訪問序列中的對象
Python 序列的正向索引是從0開始第二個索引是1,最後一個索引是len(s)-1.
Python 序列的反向索引最後是-1,倒數第二個索引是-2,第一個一個索引是-len(s).

切片(slice)

作用:
從一個字符串序列中取出相應元素重新組成一個字符串序列
語法:
字符串[(開始索引b):(結束索引e)(:(步長))]
註:小括號()括起的部分代表可以省略
說明:
1.開始索引是切片開始切下的位置,0代表第一個元素,1代表第二元素,-1代表最後一個元素
2.結束索引是切片的終止索引(但不包含終止點)
3.步長是切片每次獲取完當前元素後移動的方向和偏移量。沒有步長,相當於取值完成後向右移動一個索引位置
(步長默認是1)。
3.1.當步長為正數時,取正向切片:
開始索引為0,結束索引默認為len(s)
3.2.當步長為負數時,取反向切片:
默認的起始位置是最後一個元素,終止位置是第一個元素的前一個位置。

python字符串格式化符號

符 號描述
%c 格式化字符及其ASCII碼
%s 格式化字符串
%d 格式化整數
%u 格式化無符號整型
%o 格式化無符號八進制數
%x 格式化無符號十六進制數
%X 格式化無符號十六進制數(大寫)
%f 格式化浮點數字,可指定小數點後的精度
%e 用科學計數法格式化浮點數
%E 作用同%e,用科學計數法格式化浮點數
%g 根據值的大小決定使用%f活%e
%G 作用同%g,根據值的大小決定使用%f活%e
%p 用十六進制數格式化變量的地址

格式化操作符輔助指令:

符號功能
* 定義寬度或者小數點精度
- 用做左對齊
+ 在正數前面顯示加號( + )
<sp> 在正數前面顯示空格
# 在八進制數前面顯示零(‘0‘),在十六進制前面顯示‘0x‘或者‘0X‘(取決於用的是‘x‘還是‘X‘)
0 顯示的數字前面填充‘0‘而不是默認的空格
% ‘%%‘輸出一個單一的‘%‘
(var) 映射變量(字典參數)
m.n. m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)

Python轉義字符

在需要在字符中使用特殊字符時,python用反斜杠(\)轉義字符。如下表:

轉義字符描述
\(在行尾時) 續行符
\\ 反斜杠符號
\‘ 單引號
\" 雙引號
\a 響鈴
\b 退格(Backspace)
\e 轉義
\000
\n 換行
\v 縱向制表符
\t 橫向制表符
\r 回車
\f 換頁
\oyy 八進制數yy代表的字符,例如:\o12代表換行
\xyy 十進制數yy代表的字符,例如:\x0a代表換行
\other 其它的字符以普通格式輸出

函數

python3中常用與序列的函數
len(x) 返回序列的長度
max(x) 返回序列的最大值
min(x) 返回序列的最小值
示例:

1 s = hello
2 len(s) >>> 5
3 max(s) >>> o
4 min(s) >>> e

字符串編碼轉換函數:
ord(c) 返回一個字符的Unicode值

1 >>> ord("")
2 23435
3 >>> ord("")
4 32418

chr(i) 返回這個整數值所對應的字符
整數轉字符串函數
bin(i) 把整數轉換給二進制字符串
oct(i) 把整數轉換給八進制字符串
hex(i) 把整數轉換給十六進制字符串
字符串構造函數:
str(obj = ‘‘) 將對象轉換為字符串
示意:
‘123‘ + 456 # 出錯,不合法
str(True) #‘True‘
str(None) #‘None‘
str(3.14) #‘3.14‘
常用的字符串方法(method):
語法:
對象名.方法(方法傳參)
示例:s = ‘abc‘
s.alpha()
文檔參見:
isdigit() :判斷全部是否為數字,全部為數字則返回True,否則返回False。
isalpha() :判斷全部是否為字母,全部為字母則返回True,否則返回False。
isupper() :判斷字母否是全部為大寫,是則返回True,否則返回False。
islower() :判斷字母否是全部為小寫,是則返回True,否則返回False。
count(s,start,end) :返回子串在字符串個數,開始和結束位置可以不選擇
find(s,start,end) :返回子串在字符中索引的位置,沒有找到則返回-1
upper() :把字符串的字母全部轉化為大寫
lower() :把字符串的字母全部轉化為小寫
strip() :刪除字符串左右兩邊的空格
lstrip() :刪除字符串右兩邊的空格
rstrip() :刪除字符串左兩邊的空格
startswith(s,start,end) :檢查開始的字符是否
endswith(s,start,end) :檢查結束的字符是否
center(number,[fill]) :把字符按照輸入的數字空格排放在中心,其他的地方填充
replace(old,new,count) :

練習:
1.輸入一個字符串用變量s綁定
  1.1判斷你輸入的字符串有幾個空格
  1.2講原字符串的左右空白字去掉,打印出剩余的字符個數
  1.3判斷你輸入的是否數字
  1.4如果是數字,判斷這個數字是否大於100.
2.輸入三行文字,讓這三行文字在一個方框內居中顯示:
如輸入:
hello!
I‘m studing python
I like python
顯示如下:
+----------------------------+
| hello! |
| I‘m studing python |
| I like python |
+----------------------------+
註意:請不要輸入中文

 1 #符串work.py
 2 #1.寫一個程序,輸入一段字符串,如果字符串不為空,把第一個字符的編碼值打印出;
 3 #2.寫一個程序,輸入整數值(0--65535),打印出這個數值對應的字符。
 4 while True:
 5 
 6     s = input(請輸入:)
 7     if s == ‘‘:
 8         print(你輸入的是空的字符串)
 9     else:
10         print(s,這個字符串第一個字符的編碼值是,ord(s[0]))
11     i = int(input(請輸入0至65535之間的一個整數:))
12     print(i,"這個整數對應的字符是",chr(i))
13     choice = input("輸入0退出,按其他繼續輸入")
14     if choice == 0:
15             break
 1 #字符串.py
 2 #輸入一個字符串,把字符串的第一個字符和最後一個字符去掉,打印出處理的結果。
 3 #輸入任意字符串,判斷這個字符串是否回文:回文示例:上海自來水來自海上
 4 while True:
 5     s = input("請輸入:")
 6     print(原來字符串:,s,"去掉第一和最後一個字符的處理結果:",s[1:-1])
 7     #l=len(s)//2
 8     #if s[0:l+1] == s[-1:-(l+2):-1]: #拿前後半段來對比
 9     if s == s[::-1]: #直接反向排序來對比
10         print(s,是回文)
11     else:
12         print(s,不是回文)
13     choice = input(輸入0退出,按其他繼續輸入:)
14     if choice == 0:
15         break
 1 # 1.輸入一個字符串用變量s綁定
 2 #         1.1判斷你輸入的字符串有幾個空格
 3 #         1.2將原字符串的左右空白字去掉,打印出剩余的字符個數
 4 #         1.3判斷你輸入的是否數字
 5 #         1.4如果是數字,判斷這個數字是否大於100.
 6 while True:
 7     s = input(請輸入:)
 8     space = s.count( )
 9     s1 = s.replace( ,‘‘)
10     l = len(s1)
11     print(s,"你輸入的字符串有",space,空格)
12     print(去掉,space,空格後,剩余的字符個數:,l)
13     if s.isdigit():
14         if int(s) <= 100:
15             print(int(s),小於等於100)
16         else:
17             print(int(s),大於100)
18     else:
19         print(s,不是一個純數字字符串)
20     choice = input("按0退出,按其他請繼續輸入")
21     if choice == 0:
22         break
 1 # 2.輸入三行文字,讓這三行文字在一個方框內居中顯示:
 2 #         如輸入:
 3 #             hello!
 4 #             I‘m studing python
 5 #             I like python
 6 #         顯示如下:
 7 #         +----------------------------+
 8 #         |           hello!           |
 9 #         |     I‘m studing python     |
10 #         |       I like python        |
11 #         +----------------------------+
12 #         註意:請不要輸入中文
13 while True:
14     s = input(請輸入)
15     s1 = input(請輸入)
16     s2 = input(請輸入)
17     print(++-*30++)
18     print(|+s.center(30)+|)
19     print(|+s1.center(30)+|)
20     print(|+s2.center(30)+|)
21     print(++-*30++)
22     print(=*(lenght+4))
23     #方法2
24     lenght = max(len(s),len(s1),len(s2))#來控制寬度
25     print(++-*(lenght+2)++)
26     print(|+s.center(lenght+2)+|)
27     print(|+s1.center(lenght+2)+|)
28     print(|+s2.center(lenght+2)+|)
29     print(++-*(lenght+2)++)
30     choice = input("按0退出,按其他請繼續輸入")
31     if choice == 0:
32         break

字符串和字符編碼unicode