8. 數(shù)據(jù)類型 - 字符串詳解

Hi, 大家好。我是茶桁。

前幾節(jié)課中我們學(xué)習(xí)了函數(shù),那么這節(jié)課開始腺怯,我們花幾節(jié)課返過頭來詳細(xì)的學(xué)習(xí)一下Python內(nèi)的數(shù)據(jù)類型呛占。第一節(jié)課,讓我們先從字符串開始:

image.png
  • 回顧字符串的定義方式
  • 了解轉(zhuǎn)義字符
  • 字符串格式化的方法
  • 字符串相關(guān)函數(shù)

字符串的定義方式

  1. 單引號(hào)定義字符串 ‘ ’
  2. 雙引號(hào)定義字符串“ ”
  3. 三引號(hào)定義字符串‘’‘內(nèi)容’‘’或者“”“內(nèi)容”“”
  4. 字符串定義時(shí)鉴未,引號(hào)可以互相嵌套

轉(zhuǎn)義字符

一個(gè)普通的字符出現(xiàn)在轉(zhuǎn)義符\的后面時(shí)级及,實(shí)現(xiàn)了另外一種意義其骄。

  • \ 轉(zhuǎn)義符亏镰,續(xù)行符。

作為轉(zhuǎn)義符時(shí)拯爽,在\后面出現(xiàn)的字符可能會(huì)實(shí)現(xiàn)另外一種意義索抓。

作為續(xù)行符時(shí),在行尾使用了\后毯炮,可以換行繼續(xù)書寫內(nèi)容逼肯。

str = '123'\
    '456'
print(str)

---
123456

打印結(jié)果看,并未換行桃煎,說明續(xù)行符起作用了篮幢。

  • \n 代表一個(gè)換行符
str = "歲月是一把殺豬刀, \n但是它拿長(zhǎng)得丑的人一點(diǎn)辦法都沒有为迈。"
print(str)

---
歲月是一把殺豬刀三椿, 
但是它拿長(zhǎng)得丑的人一點(diǎn)辦法都沒有。
  • \r代表光標(biāo)位置(從\r出現(xiàn)的位置開始作為光標(biāo)的起點(diǎn))
str = "歲月是一把殺豬刀葫辐, \r但是它拿長(zhǎng)得丑的人一點(diǎn)辦法都沒有赋续。"
print(str)

---
但是它拿長(zhǎng)得丑的人一點(diǎn)辦法都沒有。
  • \t代表一個(gè)水平制表符(table 縮進(jìn))
str = "歲月是一把殺豬刀\t但是它拿長(zhǎng)得丑的人一點(diǎn)辦法都沒有另患。"
print(str)

---
歲月是一把殺豬刀    但是它拿長(zhǎng)得丑的人一點(diǎn)辦法都沒有纽乱。
  • \b 代表一個(gè)退格符
str = "歲月是一把殺豬刀\b但是它拿長(zhǎng)得丑的人一點(diǎn)辦法都沒有。"
print(str)

---
歲月是一把殺豬但是它拿長(zhǎng)得丑的人一點(diǎn)辦法都沒有昆箕。

注意看鸦列,并不是毫無改變的打印出來了,整句話中\b前面的這個(gè)字被退格了鹏倘。

  • \\ 反轉(zhuǎn)義\薯嗤,輸出了\,取消\的轉(zhuǎn)義效果
str = "歲月是一把殺豬刀\\n但是它拿長(zhǎng)得丑的人一點(diǎn)辦法都沒有纤泵。"
print(str)

---
歲月是一把殺豬刀\n但是它拿長(zhǎng)得丑的人一點(diǎn)辦法都沒有骆姐。

第二個(gè)\被前面的\轉(zhuǎn)義了镜粤,所以n就不會(huì)再被轉(zhuǎn)義,也就沒有換行玻褪。

  • r肉渴, 如果我們想把轉(zhuǎn)義字符也作為普通字符輸出,那我們可以在字符串的最前面加上r
str = r"歲月是一把殺豬刀\n但是它拿長(zhǎng)得丑的人一點(diǎn)辦法都沒有带射。"
print(str)

---
歲月是一把殺豬刀\n但是它拿長(zhǎng)得丑的人一點(diǎn)辦法都沒有同规。

字符串內(nèi)的轉(zhuǎn)移字符\n被打印了出來。

字符串相關(guān)的操作

  • 字符串+操作, 將參與運(yùn)算的字符串相加后組成一個(gè)新的字符串窟社。
str="君不見券勺,黃河之水天上來,奔流到海不復(fù)回灿里。"
str2 = "君不見关炼,高堂明鏡悲白發(fā),朝如青絲暮成雪匣吊。"
res = '將進(jìn)酒\n'+ str + '\n' + str2
print(res)

---
將進(jìn)酒
君不見儒拂,黃河之水天上來,奔流到海不復(fù)回缀去。
君不見侣灶,高堂明鏡悲白發(fā),朝如青絲暮成雪缕碎。
  • 字符串*操作褥影,str*n就是 將當(dāng)前字符串重復(fù)n
str = '重要的話說三遍\n' * 3
print(str)

---
重要的話說三遍
重要的話說三遍
重要的話說三遍
  • 字符串[]切片操作

字符串的索引操作,字符串中只能使用[]下標(biāo)訪問咏雌,不能修改凡怎。

str[start:stop:step]
功能,獲取str的特定下標(biāo)或者對(duì)str進(jìn)行切片操作
參數(shù):
    start: 可選赊抖,開始值统倒,默認(rèn)為0
  stop: 可選,結(jié)束值氛雪,默認(rèn)為len(str)
  step:可選房匆,步進(jìn)值,默認(rèn)為1

因?yàn)樗袇?shù)都是可選項(xiàng)报亩,所以其實(shí)我們可以什么參數(shù)都不給浴鸿,直接使用默認(rèn)值:

str = '凡詩(shī)之所謂風(fēng)者,多出于里巷歌謠之作弦追,所謂男女相與詠歌岳链,各言其情者也。'
print(str)
# 等同于
print(str[::])

---
凡詩(shī)之所謂風(fēng)者劲件,多出于里巷歌謠之作掸哑,所謂男女相與詠歌约急,各言其情者也。
凡詩(shī)之所謂風(fēng)者苗分,多出于里巷歌謠之作厌蔽,所謂男女相與詠歌,各言其情者也俭嘁。

當(dāng)我們寫一個(gè)值躺枕,那就是獲取指定下標(biāo)的元素:

print(str[6])

---
者

但是當(dāng)我們只寫一個(gè)值服猪,并且后面跟上符號(hào)::, 那含義就是從start開始供填,向后取完:

print(str[6::])

---
者,多出于里巷歌謠之作罢猪,所謂男女相與詠歌近她,各言其情者也。

從這我們可以看出來膳帕,當(dāng)我們只寫一個(gè)單獨(dú)的值而沒有加::的時(shí)候粘捎,含義就是從start開始,但是并不向后繼續(xù)取值危彩,而有了::就是繼續(xù)向后取值攒磨。其實(shí),只寫一個(gè):也是一樣的汤徽,因?yàn)橹灰老蚝笕≈担?code>step默認(rèn)值就是為1:

print(str[6:])

---
者娩缰,多出于里巷歌謠之作,所謂男女相與詠歌谒府,各言其情者也拼坎。

那如果我們?cè)谶@個(gè)基礎(chǔ)上加上一個(gè)值,那就是從start開始直到stop之前完疫。和range()一樣泰鸡,取不到stop

print(str[2:6])

---
之所謂風(fēng)

然后再多加一個(gè)值壳鹤,和range()一樣盛龄,就是往后數(shù)step個(gè)數(shù)再取值:

print(str[2:15:2])

---
之謂者多于巷謠

其實(shí),這里比較饒的并不是如何取值芳誓,二是::這兩個(gè)符號(hào)余舶。當(dāng)我們將上面講的這些內(nèi)容了解通透后,就可以玩轉(zhuǎn)字符串的切片了兆沙。

那對(duì)應(yīng)的欧芽,如果我們想將字符串完全取值,但是是隔一個(gè)取一個(gè)葛圃,那我們就可以使用startstop的默認(rèn)值千扔,而只定義step

print(str[::2])

---
凡之謂者多于巷謠作所男相詠憎妙,言情也

那如果我們想讓整個(gè)字符串倒過來呢?

print(str[::-1])

---
曲楚。也者情其言各厘唾,歌詠與相女男謂所,作之謠歌巷里于出多龙誊,者風(fēng)謂所之詩(shī)凡

字符串的格式化方法

常用的字符串的格式化方法就是format()

先讓我們看看最普通的方式:

s = '茶桁'
str = '乘舟將欲行抚垃,忽聞岸上踏歌聲。'

我定義了這兩個(gè)字符串趟大,現(xiàn)在我想將兩段字符串合在一起變成一句“茶桁乘舟將欲行鹤树,忽聞岸上踏歌聲。”(嗯逊朽,權(quán)吾乃青蓮居士罕伯。)

很多小伙伴是不是覺得太簡(jiǎn)單了,我們之前學(xué)了+號(hào)叽讳,直接拼接不就好了追他。自然也是可以的,只是我們現(xiàn)在要用更普遍和便捷的方式來完成:

s = '茶桁'
str = '{}乘舟將欲行岛蚤,忽聞岸上踏歌聲邑狸。'.format(s)
print(str)

---
茶桁乘舟將欲行,忽聞岸上踏歌聲涤妒。

假如說单雾,我們現(xiàn)在只有詩(shī)詞的大半句,其中少了踏歌行這三個(gè)字届腐,那我們又該如何铁坎?那我們就往format中傳入兩個(gè)參數(shù),后面那個(gè)參數(shù)自定義出這三個(gè)字符就可以了:

s = '茶桁'
str = '{}乘舟將欲行犁苏,忽聞岸上{}硬萍。'.format(s, "踏歌行")
print(str)

---
茶桁乘舟將欲行,忽聞岸上踏歌行围详。

看到這里朴乖,我們是不是認(rèn)為字符串使用format就只能順序傳值?第一個(gè)答案填入第一個(gè)空助赞,第二個(gè)答案填入第二個(gè)空... 其實(shí)不只是如此买羞,字符串后使用format,其中的{}還可以接受索引傳參:

s = '茶桁'
str = '{1}乘舟將欲行雹食,忽聞岸上{0}畜普。'.format("踏歌行", s)
print(str)

---
茶桁乘舟將欲行,忽聞岸上踏歌行群叶。

通過索引傳參的適用范圍畢竟還是有限吃挑,我們很容易一不小心就會(huì)把參數(shù)順序搞亂钝荡。那還有沒有其他辦法呢?

我們還可以通過關(guān)鍵字傳參:

str = '{s2}乘舟將欲行舶衬,忽聞岸上{s1}埠通。'.format(s1 = "踏歌行", s2 = "茶桁")
print(str)

---
茶桁乘舟將欲行,忽聞岸上踏歌行逛犹。

那假如說我們得到的是一個(gè)列表數(shù)據(jù)端辱,是否需要先轉(zhuǎn)換數(shù)據(jù)?其實(shí)也沒必要虽画,format支持對(duì)容器型數(shù)據(jù)的傳參數(shù):

str = '豪放派:{0[0]}舞蔽,婉約派:{0[1]},流氓派:{0[3]},蛋黃派:{0[2]}'.format(['李白','辛棄疾','達(dá)利園','茶桁'])
print(str)

---
豪放派:李白狸捕,婉約派:辛棄疾喷鸽,流氓派:茶桁,蛋黃派:達(dá)利園

那么如果是字典類型的呢众雷?那就更簡(jiǎn)單了灸拍,我們之前提到的關(guān)鍵字傳參,不就正好對(duì)應(yīng)字典嗎砾省?

dict = {'a':'茶桁', 'b':'蛋黃派'}
str = '{a}乘舟將欲行鸡岗,忽聞岸上'.format(**dict)
print(str)

---
茶桁乘舟將欲行编兄,忽聞岸上蛋黃派

嗯轩性,不錯(cuò)。似乎我們創(chuàng)建了一句新的詩(shī)句狠鸳。

其實(shí)揣苏,format還有其他的用法,就是直接用關(guān)鍵字f件舵, 比如:

str = f'{dict["a"]}乘舟將欲行卸察,忽聞岸上{dict["b"]}'
print(str)

---
茶桁乘舟將欲行,忽聞岸上蛋黃派

f是在3.7版本中新增的格式化方法铅祸,在使用的過程中坑质,要注意字符串符號(hào)“”‘’的嵌套關(guān)系。

在基本使用之外临梗,我們還有一些風(fēng)騷的特殊用法涡扼,比如,我們可以用format直接限定小數(shù)的位數(shù):

str = '圓周率是多少:{:.5f}'.format(3.1415926)
print(str)

---
圓周率是多少:3.14159

字符串相關(guān)函數(shù)

在Python中盟庞,字符串應(yīng)該是最常見的數(shù)據(jù)類型吃沪,對(duì)應(yīng)字符串的函數(shù)也有不少。大家可以去看看官方的文檔

英文字符與字符檢測(cè)相關(guān)函數(shù)

我們可以返回字符串的副本什猖,并且將首字母大寫票彪,其余小寫:

str = 'I am a data product manager'
str.capitalize()

---
'I am a data product manager'

因?yàn)槲以谑褂肑upyter Notebook萎津,所以即便我么有使用print,依然可以打印出執(zhí)行結(jié)果抹镊。只是僅可以打印最后一個(gè)執(zhí)行的函數(shù)锉屈。

可以把字符串中的一個(gè)單詞的首字母大寫:

str.title()

---
'I Am A Data Product Manager'

可以全部改為大寫:

str.upper()

---
'I AM A DATA PRODUCT MANAGER'

把字符串全部改為小寫

str.lower()

---
'i am a data product manager'

字符串中的大小寫字符轉(zhuǎn)換,大寫轉(zhuǎn)小寫垮耳,小寫轉(zhuǎn)大寫:

str.swapcase()

---
'i AM A DATA PRODUCT MANAGER'

檢測(cè)字符是否包含在字符串內(nèi):

print('o' in 'love')

---
True

檢測(cè)字符串是否為全部大寫字母組成

str.isupper()

---
False

檢測(cè)字符串是否為全部小寫字母組成

str.islower()

---
False

檢測(cè)字符串是否符合標(biāo)題title的要求

str.istitle()

---
False

檢測(cè)字符串是否由數(shù)字和字母組成颈渊,如果字符串中包含來非數(shù)字字母的其它字符,則返回False

str.isalnum()

---
False

檢測(cè)字符串是否全部由字符(包含英文字符和中文)組成

str.isalpha()

---
False

檢測(cè)字符串是否由純數(shù)字字符組成

'123'.isdigit()

---
True

檢測(cè)當(dāng)前字符串是否為 空格 字符組成 ' ’

' '.isspace()

---
True

檢測(cè)字符串是否以指定的字符開始的终佛,也可以指定開始和結(jié)束的位置

str.startswith('I')

---
True
str.startswith('a', 5)

---
True

檢測(cè)字符串是否以 指定的字符 結(jié)束的俊嗽,也可以指定開始和結(jié)束的位置

print(str.endswith('a'))
print(str.endswith('a', 5, 11))
print(str.endswith('a', 1, 6))

---
False
True
True

字符串的查找和操作相關(guān)函數(shù)(? 重點(diǎn))

前面鋪墊了那么多之后,接下來這部分铃彰,才是這一節(jié)的重點(diǎn)绍豁。

讓我們先從查找來看:

str.find(sub[, start[, end]])

find會(huì)返回一個(gè)子字符串,找到字符中符合條件的第一個(gè)字符出現(xiàn)的索引位置牙捉,未找到則返回-1

str = "I am a data product manager."
print(str.find('am'))

---
2

讓我們用切片的方式反過來找一下看看:

res = str.find('am')
str[res:res+2]

---
'am'

我們從之前可以知道res取值為2竹揍,現(xiàn)在等于是str[2:4], 正好是am所在的位置邪铲。

find中有startend芬位,是支持切片查找的:

print(str.find('am', 0, 4))
print(str.find('am', 4, 10))

---
2
-1

可以看到,在從4開始找到10的時(shí)候找不到am, find有一個(gè)功能相同带到,但是方向不同的方法rfind(), 和find的不同點(diǎn)只是昧碉,rfind是從后往前找的。

str.index(sub[, start[, end]])

類似于find()揽惹, 但在找不到子字符串的時(shí)候會(huì)引發(fā)ValueError

str.index('python')

---
ValueError: substring not found

str.count(sub[, start[, end]])

這個(gè)函數(shù)會(huì)在字符串中去查找sub在其中[start, end]范圍內(nèi)非重疊出現(xiàn)的次數(shù)被饿。

print(str.count('a'))
print(str.count('a', 5, 12))

---
6
3

接下來讓我們看看字符串操作相關(guān)的函數(shù):

str.split(sep=None, maxsplit=-1)

這個(gè)方法可以按照指定的分隔符(sep),把字符串分隔成列表搪搏。

str = 'user_admin_id_123'
str.split('_')

---
['user', 'admin', 'id', '123']

整個(gè)方法里的maxsplit是進(jìn)行多少次拆分狭握,比如1為一次拆分,也就是會(huì)返回2個(gè)元素慕嚷。默認(rèn)值為-1哥牍,意思是不限制拆分次數(shù)。

str.split('_', 1)

---
['user', 'admin_id_123']

str.rsplit(sep=None, maxsplit=-1)

split方法相似喝检,只是方向不同嗅辣。這個(gè)是從后向前獲取。

str.rsplit('_')

---
['user', 'admin', 'id', '123']

這段代碼可以看到功能上是完全一樣的挠说,如果我們把maxsplit加進(jìn)去澡谭,就能看到方向上的不同:

str.rsplit('_', 1)

---
['user_admin_id', '123']

這樣就能清晰看到,rsplit是從后面開始拆分的。

str.join(iterable)

join的功能和split可以看成是相反的蛙奖,是使用指定的字符串潘酗,把一個(gè)容器中的元素連接成一整個(gè)字符串

str = ['user', 'admin', 'id', '123']
'_'.join(str)

---
'user_admin_id_123'

str.strip([chars])

去除字符串左右兩側(cè)的指定字符, chars參數(shù)為置頂要溢出字符的字符串,默認(rèn)移除空白符雁仲。

str = ' chaheng '
str.strip(' ')

---
'chaheng'

這個(gè)函數(shù)有兩個(gè)伴生函數(shù)仔夺,一個(gè)是rstrip, 從方法名應(yīng)該能猜的出來攒砖,這是去掉字符串右側(cè)的指定字符缸兔,另一個(gè)是lstrip, 這是去除左側(cè)的指定字符吹艇。

str.rstrip(' ')
str.lstrip(' ')

---
' chaheng'
'chaheng '

len()函數(shù)可以獲取當(dāng)前字符串的長(zhǎng)度

len(str)

---
9

str.replace(old, new[, count])

可以替換對(duì)應(yīng)的字符串惰蜜,將old都替稱為newcount則是替換次數(shù)受神。比如一個(gè)字符串內(nèi)出現(xiàn)了十次old抛猖, 我``count給的5, 則只替換前5次出現(xiàn)的old`字符串。

str = 'abcabcabcabcabcabc'
str.replace('a', 'e')
str.replace('a', 'e', 2)

---
'ebcebcebcebcebcebc'
'ebcebcabcabcabcabc'

可以注意一下兩次打印的區(qū)別鼻听。

這次就不留練習(xí)題了财著,字符串的查詢和操作函數(shù)屬于重中之重,大家最好是多去練習(xí)幾遍精算,將其中的方法記會(huì)杯熟瓢宦。

好,今天就到這里灰羽。咱們下節(jié)課再見。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載鱼辙,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者廉嚼。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市倒戏,隨后出現(xiàn)的幾起案子怠噪,更是在濱河造成了極大的恐慌,老刑警劉巖杜跷,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傍念,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡葛闷,警方通過查閱死者的電腦和手機(jī)憋槐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淑趾,“玉大人阳仔,你說我怎么就攤上這事】鄄矗” “怎么了近范?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵嘶摊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我评矩,道長(zhǎng)叶堆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任斥杜,我火速辦了婚禮蹂空,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘果录。我一直安慰自己上枕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布弱恒。 她就那樣靜靜地躺著辨萍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪返弹。 梳的紋絲不亂的頭發(fā)上锈玉,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音义起,去河邊找鬼拉背。 笑死,一個(gè)胖子當(dāng)著我的面吹牛默终,可吹牛的內(nèi)容都是我干的椅棺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼齐蔽,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼两疚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起含滴,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诱渤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后谈况,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勺美,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年碑韵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赡茸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泼诱,死狀恐怖坛掠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤屉栓,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布舷蒲,位于F島的核電站,受9級(jí)特大地震影響友多,放射性物質(zhì)發(fā)生泄漏牲平。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一域滥、第九天 我趴在偏房一處隱蔽的房頂上張望纵柿。 院中可真熱鬧,春花似錦启绰、人聲如沸昂儒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)渊跋。三九已至,卻和暖如春着倾,著一層夾襖步出監(jiān)牢的瞬間拾酝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工卡者, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蒿囤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓崇决,卻偏偏與公主長(zhǎng)得像材诽,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嗽桩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容