全網顯示的 IP 歸屬地,帶你5分鐘加上,就這麼簡單
參考:https://www.runoob.com/python/python-strings.html
介紹
字串Str是python六類基本資料型別之一,用於表示1個或多個字元組合。
賦值:
s1 = '123'
s2 = "abc"
s3 = '''多行
輸入'''
s4 = """多行
輸出"""
- 通過成對的單引號或雙引號賦值單行字串,不能直接保留換行字元,會報錯,但可以使用轉義字元\n
- 通過成對的三引號賦值多行字串,保留換行字元
- 在python中沒有直接的字元型別,單字元可以視為長度為1的字串
print(type('abc'))
<class 'str'>
轉義字元
轉義字元的機制是為了表示某些無法編輯輸入或者與python程式語言衝突的字元而存在。其特徵是字首字元''。
轉義字元 | 描述 |
---|---|
(在行尾時) | 續行符 |
\ | 反斜槓符號 |
' | 單引號 |
" | 雙引號 |
\a | 響鈴 |
\b | 退格(Backspace) |
\e | 轉義 |
\000 | 空 |
\n | 換行 |
\v | 縱向製表符 |
\t | 橫向製表符 |
\r | 回車 |
\f | 換頁 |
\oyy | 八進位制數,y 代表 0~7 的字元,例如:\012 代表換行。 |
\xyy | 十六進位制數,以 \x 開頭,yy代表的字元,例如:\x0a代表換行 |
\other | 其它的字元以普通格式輸出 |
有時候,不想使用轉義機制,可以在字串前面使用r字首,字串將按照本身的字元輸出。
a = 'abc\"' # 輸出:abc" b = r'abc\"' # 輸出:abc\"
uniocde
unicode字元,實際是一種特殊的轉義字元,由\uxxxx進行轉義引起。也遵循加r不轉義
索引和索引操作
python中的包括字串在內的所有集合型別都支援兩種索引:
- 正向索引,從左往右,從0遞增
- 反向索引,從右往左,從-1遞減
擷取(一個引數):
s[n]
n可以為一個正向的或者反向的索引,表示獲取單個字元
n超出取值範圍會丟擲“IndexError: string index out of range”異常
擷取(兩個引數):
s[m:n]
s[m:]
s[:n]
s[:]
- m和n分別表示開始索引和結束索引,遵循左開右閉取值
- m和n可以都為正向索引,或者都為反向索引,也可以一個為正向另一個為反向索引。
- m索引表示的字元必須在n索引表示的左邊,否則返回''
- 如果開始索引超出取值範圍或者未定義,則擷取結束索引左邊的字串。如果結束索引超出取值範圍或者未定義,則擷取開始索引及左邊的字串。如果開始索引和結束索引都超出或者未定義,則表示擷取整個的字串
擷取(三個引數)
s[m:n:t]
t表示遞增取值,預設為1,表示連續取值
拼接:
通過+運算子可以實現字串之間的拼接,但是字串不能與非字串的型別直接拼接,必須對其它型別使用str()函式轉換
複製:
通過*運算子可以實現字元的複製,其後的數字指定複製的次數
s1 = 'abc'
s2 = ',def'
print(s1+s2) # abc,def
print(s1*2+s2*2) # abcabc,def,def
print((s1*2+s2)*2) # abcabc,defabcabc,def
是否包含:
'a' in s
'a' not in s
通過關鍵字in判斷元素是否在集合中,返回bool型別值
方法
格式化
s = '%s,123'%('張三')
print(s)
%格式化,如果只有一個引數,引數可以不用()包圍
s2 = f'hello,{123}'
# s3 = f'{1+2=}'
print(s2)
引數可以是字面量、變數或者運算式
\n和\r
\n:換行符,跳到下一行
\r:回車,跳到當前行的首部
\r會佔據一個字元長度
f = open('ccc', mode='w', encoding='utf-8')
f.write('abc\r\ncde\r\n')
f.close()
f = open('ccc',mode='r',encoding='utf-8')
s = f.read()
print(s, s.encode('utf-8'), len(s))
f.close()
\r被寫入檔案時,會被替換為\n
s = 'abc\r\ncde\n123'
print(s, s.encode('utf-8'))
在控制檯輸出時,\r\n和\n的效果一致
s = 'abc5\rcde\n123'
print(s, s.encode('utf-8'))
在控制檯輸出時,\r的效果是對此行在其之前的內容清除,然後輸出在其之後的內容