3 5Python中的字串

2021-07-28 03:00:00 字數 3402 閱讀 4502

3-5 python中定義字串

3-6 python中raw字串與多行字串

3-7 python中unicode字串

前面我們講解了什麼是字串。字串可以用」或者」「括起來表示。

如果字串本身包含』怎麼辦?比如我們要表示字串 i』m ok ,這時,可以用」 「括起來表示:

"i'm ok"
類似的,如果字串包含」,我們就可以用』 『括起來表示:

'learn

"python"

in imooc'

如果字串既包含』又包含」怎麼辦?

這個時候,就需要對字串的某些特殊字元進行「轉義」,python字串用\進行轉義。

要表示字串 bob said 「i』m ok」.

由於 』 和 」 會引起歧義,因此,我們在它前面插入乙個\表示這是乙個普通字元,不代表字串的起始,因此,這個字串又可以表示為

'bob said \"i\'m ok\".'
注意:轉義字元 \ 不計入字串的內容中。

常用的轉義字元還有:

\n 表示換行

\t 表示乙個製表符(tab)

\\ 表示 \ 字元本身

任務

請將下面兩行內容用python的字串表示並列印出來:

python was started in

1989

by"guido".

python is free and easy to learn.

答案

s = '\tpython was started in 1989 by \"guido\".\n

\tpython is free and easy to learn.'

print s

如果乙個字串包含很多需要轉義的字元,對每乙個字元都進行轉義會很麻煩。

為了避免這種情況,我們可以在字串前面加個字首 r ,表示這是乙個 raw 字串,裡面的字元就不需要轉義了。例如:

r'\(~_~)/ \(~_~)/'
但是r』…』表示法不能表示多行字串,也不能表示包含』和 「的字串(為什麼?)

如果要表示多行字串,可以用」』…」』表示:

'''line 1

line 2

line 3'''

上面這個字串的表示方法和下面的是完全一樣的:

'line 1\nline 2\nline 3'
還可以在多行字串前面新增 r ,把這個多行字串也變成乙個raw字串:

r'''python is created by "guido".

it is free and easy to learn.

let's start learn python in imooc!'''

任務

請把下面的字串用r」』…」』的形式改寫,並用print列印出來:

'\"to be, or

not to be\": that

is the question.\nwhether it\'s nobler in the mind to suffer.'

答案

print

r'''"to be, or not to be": that is the question.

whether it's nobler in the mind to suffer.'''

字串還有乙個編碼問題。

因為計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位元(bit)作為乙個位元組(byte),所以,乙個位元組能表示的最大的整數就是255(二進位制11111111=十進位制255),0 - 255被用來表示大小寫英文本母、數字和一些符號,這個編碼表被稱為==ascii編碼==,比如大寫字母 ==a==的編碼是==65==,小寫字母 ==z== 的編碼是==122==。

如果要表示中文,顯然乙個位元組是不夠的,至少需要兩個位元組,而且還不能和ascii編碼衝突,所以,中國制定了==gb2312==編碼,用來把中文編進去。

類似的,日文和韓文等其他語言也有這個問題。為了統一所有文字的編碼,==unicode==應運而生。unicode把所有語言都統一到一套編碼裡,這樣就不會再有亂碼問題了。

unicode通常用兩個位元組表示乙個字元,原有的英文編碼從單位元組變成雙位元組,只需要把高位元組全部填為0就可以。

因為python的誕生比unicode標準發布的時間還要早,所以最早的python只支援ascii編碼,普通的字串』abc』在python內部都是ascii編碼的。

python在後來新增了對unicode的支援,以unicode表示的字串用u』…』表示,比如:

print

u'中文'

中文

注意: 不加 u ,中文就不能正常顯示。

unicode字串除了多了乙個 u 之外,與普通字串沒啥區別,轉義字元和多行表示法仍然有效:

轉義:

u'中文\n日文\n韓文'
多行:

u'''第一行

第二行'''

raw+多行:

ur'''python的unicode字串支援"中文",

"日文",

"韓文"等多種語言'''

如果中文字串在python環境下遇到 unicodedecodeerror,這是因為.py檔案儲存的格式有問題。可以在第一行新增注釋

# -*- coding: utf-8 -*-
目的是告訴python直譯器,用utf-8編碼讀取源**。然後用notepad++ 另存為… 並選擇utf-8格式儲存。

任務

用多行unicode字串表示下面的唐詩並列印:

靜夜思

床前明月光,

疑是地上霜。

舉頭望明月,

低頭思故鄉。

答案

# -*- coding: utf-8 -*-

print (r'''靜夜思 # 這裡不需要用u,開頭一句,已經定義了。

床前明月光,

疑是地上霜。

舉頭望明月,

低頭思故鄉。''')

python中的字串

方法1 用字串的join方法 a a b c d content content join a print content 方法2 用字串的替換佔位符替換 a a b c d content content s s s s tuple a print content 我們可以通過索引來提取想要獲取的...

python中的字串

b nihao hahah xixi 輸出 nihao nhahah nxixi n 原字串 big r this hhaha big輸出 this nhhaha 還原為unicode字串 hello u hello u0020world hello輸出 hello world 字串是不可以改變的 ...

python中的字串

字串連線操作 字串複製操作 字串索引操作,通過索引訪問指定位置的字元,索引從0開始 字串取片操作 完整格式 開始索引 結束索引 間隔值 結束索引 從開頭擷取到結束索引之前 開始索引 從開始索引擷取到字串的最後 開始索引 結束索引 從開始索引擷取到結束索引之前 擷取所有字串 開始索引 結束索引 間隔值...