寫在前面
下學期開始上計算機網絡的課程,現在已經在看相關書籍,希望結合python寫出一個網絡爬蟲程序。利用學習C++后的空余時間來看看Python並在這里總結、記錄,就權當是我的備忘錄吧。
字符串
Unicode字符串
在Python2中,普通字符串是以8位ASCII碼進行存儲的,而Unicode字符串則存儲為16位unicode字符串,這樣能夠表示更多的字符集。使用的語法是在字符串前面加上前綴u
在Python3中,所有的字符串都是Unicode字符串
字符串的表示方式
在python中,字符串有4中表示方式:
>>>
>>> #單引號
>>> A='Hello'
>>> #雙引號
>>> B="Hello"
>>> #三單引號
>>> C='''Hello'''
>>> #三雙引號
>>> D="""Hello"""
>>> print("A:"+A+"\nB:"+B+"\nC:"+C+"\nD:"+D)
A:Hello
B:Hello
C:Hello
D:Hello
>>> #結果相同
>>>
從輸出可以看到4中字符串的結果是一樣的,那為什么要這么麻煩呢?
- 雙引號、單引號避免使用轉義字符。當字符串中含有引號(如單引號)時,使用與該引號不同(如雙引號)包含字符串可以直接使用該引號而不需進行字符轉義:
>>>
>>> #使用轉義字符的例子:
>>> print('I\'am learning Python')
I'am learning Python
>>> #使用雙引號包含字符串不需使用轉義字符串:
>>> print("I'am learning Python")
I'am learning Python
>>> #另一個例子:
>>> print('I have learnt "Python" language')
I have learnt "Python" language
>>>
- 三引號使長字符串可直接跨行
單雙引號表示的字符串通常要寫成一行:
s = "I'am learning Python"
如果要寫成多行,就要使用(連行符):
s = "I'am learning \
Python"
但是如果你使用三引號,那就不用使用連行符了,直接寫吧:
s = """I'am learning
Python""""
過長字符串的表示
除了上面所說的使用三單引號或三雙引號以及連行符\進行長字符串的跨行表示外,還可以使用圓括號將字符串跨行連接在一起:
s= ("i am a "
"student")
print(s)
結果輸出:
>>>
i am a student
使用哪一種方法,根據個人喜好選擇。我本人比較喜歡使用三引號,因為比較方便o(^▽^)
轉義字符串
上面的示例中\n就是一個轉義字符串,它把字符n轉義成換行符,相應的其他轉義序列有:
轉義字符 | 含義 |
---|---|
\newline | 忽略換行 |
\ | \ |
' | ' |
" | " |
\a | ASCII蜂鳴 |
\b | ASCII退格 |
\f | ASCII走紙 |
\r | 回車CR |
\n | 換行LF |
\t | ASCII制表符 |
\v | ASCII垂直指標 |
\ooo | 給定八進制字符 |
\xhh | 給定8位十六進制字符 |
\uhhhhh | 給定16位十六進制字符 |
\Uhhhh hhhh | 給定32位十六進制字符 |
\N{name} | 給定名稱的Unicode字符,name是一個標准Unicode名稱 |
取消轉義字符的作用——原始字符串
在字符串前使用r前綴,能夠使字符串中的轉義字符失去轉義作用而直接作為字符串輸出。例如:
>>>
>>> print("C:\nowhere") #我們想輸出c:\nowhere
C:
owhere
>>> #結果卻發生了轉義
>>> #這時應該使用r產生原始字符串:
>>> print(r"C:\nowhere")
C:\nowhere
>>>
使用+進行字符串拼接
- 連續的兩個“”“”可以使兩個雙引號內的字符串拼接在一起。而實際上這並不是拼接字符串,只是一種書寫字符串的特殊方式
>>> print("I'am learing" "python")
I'am learingpython
>>>
- 真正的字符串拼接可以使用** +**:
>>> print ("I'am learning"+"python")
I'am learningpython
>>>
數值轉換為字符串:str與repr
把值轉換為字符串的兩種機制。
- str是一個類型,它把值轉換為合理形式的字符串
- repr是個函數,它以合法的python表達式的形式來表示值
說明:repr的功能在Python2中可以以反引號來代替,不過Python3已經不再使用反引號。我們應該堅持使用repr。
raw_input函數 與input函數
在python2中,input函數假設用戶輸入的和一個合法的表達式:
>>> name = input("what is your name? ")
what is your name? "whz"
>>>
在上面的例子中,用戶必須輸入”whz“而不是whz,因為whz並不是一個合法表達式。Python2中提供了raw_input來解決這個使用戶覺得繁瑣的問題。raw_input把所以輸入當原始數據並將其作為字符串存儲。
>>> name = raw_input("what is your name? ")
what is your name? whz
>>>
然而,在Python3中raw_input以及並入到input中,所以在Python3我們使用input接收到的數據都會被當成字符串儲存起來。
關於字符串的操作等其他內容后續進行介紹。
下一篇:Python 序列通用操作介紹