1. 程式人生 > 其它 >全網顯示的 IP 歸屬地,帶你5分鐘加上,就這麼簡單

全網顯示的 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的效果是對此行在其之前的內容清除,然後輸出在其之後的內容