Python基礎類型
- Python Character string 字符串
字符串在python中 可以使用引號( ” 或 ’ )來創建
>>> var1 = 'hello python'
>>> print(var1[0])
h
>>> print(var1[0:4])
hell
>>> print(var1[-5:])
ython
>>> var2 = var1[0:6] + 'world'
>>> print(var2)
hello world
2.. Python轉義
\ :在行尾時,爲續行符
\ :反斜槓轉義,輸出’\’
\’ :單引號轉義
\” :雙引號轉義
\b :退格(backspace)
\n :換行
\v :縱向製表符
\t :橫向製表符
\r :回車
\f :換頁
3.Python字符串運算符
(+)拼接,(*)重複,([])索引,([:])切片,(in)成員判斷,(not in)非成員判斷,(r/R)元素輸出字符串
>>> var1 = 'hello'
>>> var2 = 'python'
>>> print(var1+var2)
hellopython
>>> print(var1*6)
hellohellohellohellohellohello
>>> print(var1[3])
l
>>> print(var1[0])
h
>>> print(var1[3:])
lo
>>> 'e' in var1
True
>>> 'e' in var2
False
>>>
>>> print('he\tllo \n')
he llo
>>> print(r'he\tllo \n')
he\tllo \n
>>> print('aaaa\nbbbbb')
aaaa
bbbbb
>>> print('aaaa\nbbbbb',end='')
aaaa
bbbbb>>>
>>>
4.格式化字符串
當遇到複雜的表達式時,可以講一個值插入到一個有字符串格式符 %s 的字符串中
python字符串格式化符號:
字符串格式符 | 釋義 |
---|---|
%c | 格式化 字符及其ASCII碼 |
%s | 格式化字符串 |
%d | 格式化整數 |
%u | 格式化無符號整型 |
%o | 格式化無符號八進制數 |
%x | 格式化無符號十六進制數 |
%X | 格式化無符號十六進制數(大寫) |
%f | 格式化格式化浮點獅子,可指定小數點後精度 |
%e | 用科學計數法格式化浮點數 |
%E | 格式化,用科學計數法格式化浮點數,同%e |
%g | %f和%e的簡寫 |
%G | %f 和 %E 的簡寫 |
%p | 用十六進制數格式化變量的地址 |
格式化操作符輔助指令:
* 定義寬度或者小數點精度
- 用做左對齊
+ 在正數前面顯示加號( + )
# 在八進制數前面顯示零(‘0’),在十六進制前面顯示’0x’或者’0X’(取決於用的是’x’還是’X’)
0 顯示的數字前面填充’0’而不是默認的空格
% ‘%%’輸出一個單一的’%’ (var) 映射變量(字典參數)
m.n. m是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)
>>> print('ascii:%c'%'s') # ASCII格式化輸出字符
ascii:s
>>> print('ascii:%s'%'s') # 格式化輸出字符
ascii:s
>>> print('ascii:%s'%'string')
ascii:string
>>> print('num:%d'% 888) # 格式化輸出整數
num:888
>>> print('num:%f'% 888) # 格式化輸出浮點數 默然6位小數
num:888.000000
>>> print('num:%f3'% 888)
num:888.0000003
>>> print('num:%.3f'% 888) # 限定小數點後N爲格式化輸出浮點
num:888.000
>>> print('num:%e'% 888) #格式化輸出科學計數
num:8.880000e+02
>>> print('num:%E'% 888)
num:8.880000E+02
>>> print('num:%20f'%888.089) #定義20寬度輸出
num: 888.089000
>>> print('num:%-20f'%888.089) # 左對齊
num:888.089000
>>> print('num:%+-20f'%888.089) # 在正式前顯示加號
num:+888.089000
>>> print('num:%020f'%888.089) # 以0填充默認空格
num:0000000000888.089000
>>> print('num:%%%20f'%888.089) # 在數字錢輸出%號
num:% 888.089000
>>> print('num:%%%-20f'%888.089) # 左對齊輸出%號
num:%888.089000
>>> print('num:%-20.3f'%888.089) # 加寬度+左對齊+限定小數點位數
num:888.089
>>>
5.Python字符串的相關方法
常規方法:
方法 | 釋義 |
---|---|
capitalize() | 將字符串首字母置爲大寫 |
casefold() | 將字符串字母全部置爲大寫 |
center(num) | 將字符串居中,並用空格將字符串長度填充,如指定長度(num)小於實際長度則沒有效果 |
count(sub,num1,num2) | 返回sub在字符串中的次數,num1,num2爲切片限制 |
endswith(sub,num1,num2) | 判斷字符串是否以sub結尾, num1,num2爲切片限制 |
find(str) | 判斷字符串中是否有str存在;如在則返回索引,否則返回-1,可指定起始值 |
isalnum() | 如果字符串至少有一個字符,並且所有字符都是字母或數字則返回True,否則False |
isalpha() | 如果字符串至少有一個字符,並且所有字符都是字母則返回True,否則False |
isdigit() | 如果字符串只包含數字則返回True,否則返回False |
isdecimal() | 如果字符串只包含十進制數字則返回True,否則返回False |
islower() | 如果字符中至少包含一個能區分大小寫的字符,並且這些字符都是小寫則返回True,否則返回Flase |
isupper() | 如果字符中至少包含一個能區分大小寫的字符,並且這些字符都是大寫則返回True,否則返回Flase |
isnumeric() | 如果字符串只包含數字字符,則返回True,否則返回False |
isspace() | 判斷字符串中至少有一個字符且所有都是空格,否則返回false |
str1.join(str2) | 返回一個用指定字符串分隔的字,或者是將指定字符str1加入到另一個字符str2中 |
str1.startswith(str2) | 判斷字符串str1是否以某個字符str2開頭,可以是多字符 |
swapcase() | 轉換大小寫 |
title() | 標題格式,首字母大寫,其它字符小寫 |
upper() | 將全部字符串轉爲大寫 |
>>> s = 'i mi to' #將字符串的第一個字符改爲大寫
>>> s.capitalize()
'I mi to'
>>> s = 'I MI TO' #將字符串所有字符改爲小寫
>>> s.casefold()
'i mi to'
>>> s.center(15) #將字符串劇中,並用空格將字符串填充長度,如指定長度小於實際長度則沒有效果
' I MI TO '
>>> s = 'abcabcabcabc' #返回sub在字符串裏出現的次數,start,end爲可選參數,決定範圍
>>> s.count('a',0,12)
4
>>> s.encode(encoding='utf-8',errors='strict') #以encoding指定的編碼格式對字符串進行編碼
b'abcabcabcabc'
>>> s.endswith('abc',1,12) #檢查字符串是否以sub結尾,是返回True,否返回False,start,end爲可選參數,決定範圍
True
>>> s = 'a\tb\tc'
>>> s.expandtabs(4) #把字符串的tab字符(\t)轉化爲空格,如不指定tabsize,默認爲8個空格
'a b c'
>>> s.find('b') #檢測字符串是否在字符串中,如在則返回索引,否則返回-1,可指定起始值。
2
>>> s='hello python'
>>> s.index('hello') # 類似find(),不同在於如果sub不在字符串中,返回異常
0
>>> s.isalnum() #有空格返回false
False
>>> s='hellopython'
>>> s.isalnum() #如果字符串至少有一個字符,並且所有字符都是字母或數字則返回True,否則False
True
>>> s.isalpha() #如果字符串至少有一個字符,並且所有字符都是字母則返回True,否則False
True
>>> s = '123'
>>> s.isdigit() #如果字符串只包含數字則返回True,否則返回False
True
>>> s = '123'
>>> s.isdecimal() #如果字符串只包含十進制數字則返回True,否則返回False
True
>>> s= 'ox123'
>>> s.isdecimal()
False
>>> s = '0.33'
>>> s.isdecimal()
False
>>> s = 'abc'
>>> s.islower() #如果字符中至少包含一個能區分大小寫的字符,並且這些字符都是小寫則返回True,否則返回Flase
True
>>> s = 'Abc'
>>> s.islower()
False
>>> s = 'ABC'
>>> s.isupper() #果字符中至少包含一個能區分大小寫的字符,並且這些字符都是大寫則返回True,否則返回Flase
True
>>> s = 'ABc'
>>> s.isupper()
False
>>>
>>> s = '123'
>>> s.isnumeric() #如果字符串只包含數字字符,則返回True,否則返回False
True
>>> s = '123a'
>>> s.isnumeric()
False
>>> 'def'.isidentifier() #判斷字符串是否包含該語言的保留字
True
>>> 'aaa'.isprintable() #判斷是否可以打印
True
>>> ''.isspace()
False
>>> ' '.isspace() #判斷字符串中至少有一個字符且所有都是空格,否則返回false
True
>>> ' a'.isspace()
False
>>> 'Abc'.istitle() #判斷是否是標題 格式,可以理解爲首字母大寫。
True
>>> 'aBC'.istitle()
False
>>> s = '123'
>>> '_'.join(s) #返回一個用指定字符串分隔的字,或者是將指定字符加入到另一個字符中。
'1_2_3'
>>> s.join('abc')
'a123b123c'
>>> s = 'ABC'
>>> s.lower() #返回的是指定字符串的拷貝,並轉化成小寫
'abc'
>>> s.ljust(10,'+') #可以指定寬度,以及填充字符串,返回的是按寬度,填充字符串格式化後的左對齊的字符串。
'ABC+++++++'
>>> 'aaabccc'.partition('b') #在字符串中查找指定的字符,如找到則返回字符前部分,字符本身和後部分,如沒找到則返回字符串和兩個空字符串。
('aaa', 'b', 'ccc')
>>> 'aaabccc'.partition('e')
('aaabccc', '', '')
>>> 'aaabccc'.rpartition('b') #與partition一樣,但是是從右邊開始
('aaa', 'b', 'ccc')
>>> 'aaabccc'.rpartition('c')
('aaabcc', 'c', '')
>>> 'aaaaabbcc'.replace('a','A') #用指定字符串替換指定字符串,如果不指定替換次數,則替換所有
'AAAAAbbcc'
>>> 'aaaaabbcc'.replace('a','A',2)
'AAaaabbcc'
>>> 'aabbcc'.rfind('a') #返回指定子串的最高索引,如果沒找到則返回-1,可以指定要開始替換的起始,結束位置。
1
>>> 'aabbcc'.rfind('e')
-1
>>> 'aabbcc'.rindex('a') #與上面的rfind一樣,只是如果沒找到不是返回-1,而是觸發錯誤
1
>>> 'aabbcc'.rindex('e')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
>>> 'aa'.rjust(10,'+') #與ljust()相對應,右對齊
'++++++++aa'
>>> 'aa'.ljust(10,'+')
'aa++++++++'
>>> 'aabccbddbee'.split('b') ##按指定字符串對目標字符串進行切割,可以指定切割次數
['aa', 'cc', 'dd', 'ee']
>>> 'aabccbddbee'.split('b',2)
['aa', 'cc', 'ddbee']
>>> 'aabccbddbee'.rsplit('b',2) #與split作用相同,但是從右側開始
['aabcc', 'dd', 'ee']
>>> ' aabb '.strip() #移除字符串兩側的指定字符串,默認移除空格,需要注意的是可以指定多個字符
'aabb'
>>> ' aabb'.strip('b')
' aa'
>>> ' aabb'.strip('ab')
' '
>>> 'beaacebb'.rstrip('eb') #與strip一樣,從右側刪除指定字符,可以爲多個
'beaac'
>>> 'aa\nbb\ncc\ndd'.splitlines() #按換行符切割顯示,如沒指定keepends=True則將換行符移除。
['aa', 'bb', 'cc', 'dd']
>>> 'aa\nbb\ncc\ndd'.splitlines(keepends=True)
['aa\n', 'bb\n', 'cc\n', 'dd']
>>> 'aabbc'.startswith('a') #判斷字符串是否以某個字符開頭,可以是多字符
True
>>> 'aabbc'.startswith('b')
False
>>> 'aabbc'.startswith('aab')
True
>>> 'aaBBcc'.swapcase() #轉換大小寫
'AAbbCC'
>>> 'wend is ok'.title() #標題格式,首字母大寫,其它字符小寫
'Wend Is Ok'
>>> 'wend is ok'.upper() #將字符全部轉換成大寫
'WEND IS OK'
>>> 'wend is ok'.zfill(20) #這裏的z指zero,用0將字符填充到指定長度
'0000000000wend is ok'