Python基礎(12)-字符串數據類型及其所具備的方法

12.1-創建字符串:

第一種方式:

>>> s = "hello world"
>>> type(s)
<class 'str'>

第二種方式:

>>> s = str("hello world")
>>> type(s)
<class 'str'>

12.2-字符串(str)內部方法介紹:

capitalize(self):

說明:首字母變大寫。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abc"

# capitalize() 表示首字母變大寫
s2 = s1.capitalize()
print(s2)

運行結果:

casefold(self):

說明:字符串變小寫,Unicode 編碼中凡是有對應的小寫形式的,都會轉換。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "ABC"

# casefold() 表示字符串變小寫
s2 = s1.casefold()
print(s2)

運行結果:

center(self, width, fillchar=None):

說明:內容居中, width 定義總長度,fillchar 表示空白處填充內容,默認無。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abc"

# 內容居中,總長度為 20 ,填充內容為 "*"
s2 = s1.center(20,"*")
print(s2)

運行結果:

count(self, sub, start=None, end=None):

說明:查看指定子序列在字符串中出現的次數, sub 表示要指定的子序列, start 指定開始搜索的位置,默認從第一個字符開始,第一個字符索引位置為0, end 指定結束搜索的位置,默認為最后一位。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabc"

# 查看 "b" 在這個字符串里出現的次數
s2 = s1.count("b")
print(s2)

# 指定范圍,查看 "b" 在這個字符串里出現的次數
s3 = s1.count("b",2,5)
print(s3)

運行結果:

encode(self, encoding='utf-8', errors='strict'):

說明:以指定的編碼格式編碼字符串,編碼后的字符串是一個 bytes 對象, encoding 表示要使用的編碼,默認為 utf-8errors 指定不同的錯誤處理方案。

注:由于Python3中字符串沒有 decode() 方法,所以可以使用 bytes 對象的 decode() 方法來進行解碼。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "中文"

s2_utf = s1.encode("utf-8")
print("utf-8編碼:",s2_utf)

s3_gbk = s1.encode("gbk")
print("gbk編碼:",s3_gbk)

s4_utf = s2_utf.decode("utf-8")
print("utf-8解碼:",s4_utf)

s5_gbk = s3_gbk.decode("gbk")
print("gbk解碼:",s5_gbk)

運行結果:

endswith(self, suffix, start=None, end=None):

說明:判斷字符串是否以xxx結尾,如果是以xxx結尾返回 True ,否則返回 Falsesuffix 表示指定后綴 start 表示開始的位置, end 表示結束的位置。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabc"

# 查看這個字符串是否以 "abc" 結尾
s2 = s1.endswith("abc")
print(s2)

# 指定范圍,查看這個字符串是否以 "c" 結尾
s3 = s1.endswith("c",0,6)
print(s3)

# 指定范圍,查看這個字符串是否以 "c" 結尾
s4 = s1.endswith("b",0,6)
print(s4)

運行結果:

expandtabs(self, tabsize=8):

說明:將字符串中的 tab 符號(即制表符 \t ),轉換成空格, tabsize 表示將字符串中的一個 tab 符號轉換為多少個空格,默認為8個。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc\tabc"

# 將一個 tab 符號 (即制表符 \t ) 轉換為 20 個空格
s2 = s1.expandtabs(20)
print(s2)

運行結果:

find(self, sub, start=None, end=None):

說明:在字符串中查找指定子序列的位置,如果存在返回指定子序列的索引值,否則返回-1, sub 表示指定的子序列, start 表示開始的位置, end 表示結束的位置。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabc"

# 查找 "c" 所在的位置(從左往右查找,找到第一個后就不會往下繼續查找了)
s2 = s1.find("c")
print(s2)

#指定范圍查找 "c" 所在的位置
s3 = s1.find("c",3,6)
print(s3)

# 如果 "d" 不存在字符串中,就會返回 -1
s4 = s1.find("d")
print(s4)

運行結果:

format(*args, **kwargs):

說明:字符串格式化,動態參數。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 如果不設置指定位置,按默認順序("{}" 相當于占位符)
s1 = "Hello {} , Hello {}"
s2 = s1.format("World","China")
print(s2)

# 如果設置指定位置,可以不按順序
s3 = "Hello {1} , Hello {0} , Hello {1}"
s4 = s3.format("World","China")
print(s4)

運行結果:

format_map(self, mapping):

說明:字符串格式化,和 format(*args, **kwargs) 類似,只不過 mapping 是一個字典對象。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
dic = {
    "name" : "L",
    "age" : 18
}
s1 = "hello {name} , age {age}".format_map(dic)
print(s1)

運行結果:

index(self, sub, start=None, end=None):

說明:與 find() 類似,在字符串中查找指定子序列的位置,如果存在返回指定子序列的索引值,否則報錯,sub 表示指定的子序列, start 表示開始的位置, end 表示結束的位置。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabc"

# 查找 "d" 的位置,如果沒有找到報錯
s2 = s1.index("d")
print(s2)

運行結果:

isalnum(self):

說明:判斷字符串是否是字母和數字的任意組合,如果是返回 True ,否則返回 False

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 是 字母 和 數字 的任意組合,返回 True
s1 = "abcabc123"
s2 = s1.isalnum()
print(s2)

# 只包含字母或數字 返回 True
s3 = "abc".isalnum()
print(s3)
s4 = "123".isalnum()
print(s4)

# 如包含空格、小數點等符號則返回 False
s5 = "abc 123".isalnum()
print(s5)
s6 = "abc123.".isalnum()
print(s6)

運行結果:

isalpha(self):

說明:判斷字符串是否只由字母組成,如果是返回 True ,否則返回 False

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 只包含 字母 返回 True
s1 = "abcabc"
s2 = s1.isalpha()
print(s2)

# 包含 字母 和 數字 返回 False
s3 = "abc123".isalpha()
print(s3)

運行結果:

isdecimal(self):

說明:判斷字符串是否只包含十進制數字,如果是返回 True ,否則返回 False ,定義一個十進制字符串,只需要在字符串前添加 'u' 前綴即可

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 只包含 十進制數字 返回 True
s1 = "123".isdecimal()
print(s1)

# 包含 其它 返回 False
s2 = "root123".isdecimal()
print(s2)

運行結果:

isdigit(self):

說明:判斷字符串是否只由數字組成,如果是返回 True ,否則返回 False

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 只包含 數字 返回 True
s1 = "123".isdecimal()
print(s1)

# 包含 其它 返回 False
s2 = "root123".isdecimal()
print(s2)

運行結果:

isidentifier(self):

說明:判斷字符串是否為合法的標識符,如果是返回 True ,否則返回 False

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "statr".isidentifier()
print(s1)

s2 = "start_123".isidentifier()
print(s2)

s3 = "123start".isidentifier()
print(s3)

s4 = "start#".isidentifier()
print(s4)

運行結果:

islower(self):

說明:判斷字符串中所有字母是否為小寫,如果是返回 True ,否則返回 False

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 都是小寫,返回 True
s1 = "abcabc".islower()
print(s1)

# 包含數字、中文,但是字母為小寫,返回 True
s2 = "abc123中文".islower()
print(s2)

# 只要有一個字母為大寫,則返回 False
s3 = "aBc".islower()
print(s3)

運行結果:

isnumeric(self):

說明:字符串是否只由數字組成。這種方法是只針對unicode對象,定義一個字符串為Unicode,只需要在字符串前添加 'u' 前綴即可。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 只由 數字 組成 返回 True
s1 = u"123456".isnumeric()
print(s1)

# 包含 數字 和 字母 返回 False
s2 = u"abc123".isnumeric()
print(s2)

運行結果:

isprintable(self):

說明:判斷字符串中所有的字符是否為可打印字符或字符串為空,如果是返回 True ,否則返回 False

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 可打印,返回 True
s1 = "abc123".isprintable()
print(s1)

# 字符串為空,返回 True
s2 = "".isprintable()
print(s2)

運行結果:

isspace(self):

說明:判斷字符串是否全部為空格,如果是返回 True ,否則返回 False

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 全部為 空格 返回 True
s1 = "             ".isspace()
print(s1)

#不全部為 空格 返回 False
s2 = "abc    123".isspace()
print(s2)

運行結果:

istitle(self):

說明:判斷字符串是否為標題,如果是返回 True ,否則返回 False ,所有首字母大寫的為標題。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 為 標題 返回 True
s1 = "Abc".istitle()
print(s1)

# 為 標題 返回 True
s2 = "Abc Abc".istitle()
print(s2)

# 不為 標題 返回 False
s3 = "ABc".istitle()
print(s3)

運行結果:

isupper(self):

說明:判斷字符串中的所有字符是否為大寫,如果是返回 True ,否則返回 False

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 字母 全部為 大寫 返回 True
s1 = "ABCABC".isupper()
print(s1)

# 字母 和 數字 組合 ,字母為大寫 返回 True
s2 = "ABC123".isupper()
print(s2)

# 字母 其中有小寫 返回 False
s3 = "ABCabc".isupper()
print(s3)

運行結果:

join(self, iterable):

說明:用指定字符串,將可迭代對象拼接起來并生成一個新的字符串, iterable 表示接受可迭代的對象。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
l1 = ["abc","def","ghi"]

# 這個方法會去循環 "l1" 中的每一個元素,讓元素與元素之間通過 "_" 拼接起來,并變成字符串
s1 = "_".join(l1)
print(s1)

運行結果:

ljust(self, width, fillchar=None):

說明:內容左對齊, width 定義總長度,fillchar 表示右側空白處填充內容,默認無。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc"

# 內容左對齊,總長度為 20 ,填充內容為 "_"
s2 = s1.ljust(20,"_")
print(s2)

運行結果:

lower(self):

說明:字符串變小寫,對 ASCII 編碼的字母有效。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "ABC"

# lower() 表示字符串變小寫
s2 = s1.lower()
print(s2)

運行結果:

lstrip(self, chars=None):

說明:截掉字符串左側的空格或指定字符, chars 表示指定截掉的字符,默認為空格。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#截掉左側空格
s1  = "       abcabc"
s2 = s1.lstrip()
print(s2)

# 截掉左側指定字符 "*"
s3 = "***abcabc"
s4 = s3.lstrip("*")
print(s4)

運行結果:

maketrans(self, *args, **kwargs):

說明:創建字符映射的轉換表,以供 translate 方法使用,如果接收兩個參數,字符串的長度必須相等,而且兩個參數需要形成映射,第一個參數是字符串表示需要轉換的字符,第二個參數也是字符串表示轉換后的字符。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc"

# 根據 maketrans() 創建一個轉換表
dic = str.maketrans("ac","xl")

# 根據 translate() 進行轉換
s2 = s1.translate(dic)
print(s2)

運行結果:

partition(self, sep):

說明:根據指定分隔符將字符串分割為前、中、后三部分,并返回一個元組, sep 表示指定分隔符。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abc def ghi"

# 根據 "def" 進行分割為三部分,并生成一個元組
s2 = s1.partition("def")
print(s2)
print(type(s2))

運行結果:

replace(self, old, new, count=None):

說明:將字符串中的字符進行替換, old 表示將被替換的字符, new 表示替換后的字符, count 表示替換的次數,默認全部替換。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabcabc"

#將 "ab" 全部替換為 "cc"
s2 = s1.replace("ab","cc")
print(s2)

#從左側開始替換,只替換兩個
s3 = s1.replace("ab","cc",2)
print(s3)

運行結果:

rfind(self, sub, start=None, end=None):

說明:和 find() 類似,在字符串中查找指定子序列的位置,如果存在返回指定子序列的索引值,否則返回-1,只不過是從右側開始查找。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabc"

# 查找 "c" 所在的位置(從右往左查找)
s2 = s1.rfind("c")
print(s2)

#指定范圍查找 "c" 所在的位置
s3 = s1.rfind("c",3,6)
print(s3)

# 如果 "d" 不存在字符串中,就會返回 -1
s4 = s1.rfind("d")
print(s4)

運行結果:

rindex(self, sub, start=None, end=None):

說明:和index() 類似,在字符串中查找指定子序列的位置,如果存在返回指定子序列的索引值,否則報錯,只不過是從右側開始查找。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabcabc"

# 查找 "d" 的位置,如果沒有找到報錯(從右側開始查找)
s2 = s1.rindex("d")
print(s2)

運行結果:

rjust(self, width, fillchar=None):

說明:內容右對齊, width 定義總長度,fillchar 表示左側空白處填充內容,默認無。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc"

# 內容右對齊,總長度為 20 ,填充內容為 "_"
s2 = s1.rjust(20,"_")
print(s2)

運行結果:

rpartition(self, sep):

說明:和 partition() 類似,根據指定分隔符將字符串分割為前、中、后三部分,并返回一個元組,只不過是從右側開始查找分隔符。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abc abc ghi"

# 根據 "abc" 進行分割為三部分,并生成一個元組(從右側開始查找分隔符)
s2 = s1.rpartition("abc")
print(s2)
print(type(s2))

運行結果:

rsplit(self, sep=None, maxsplit=-1):

說明:從右到左通過指定分隔符對字符串進行切片,并返回一個列表, sep 表示指定分割符,默認為空格, maxsplit 表示分割次數,默認全部分割。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abc_def_ghi"

# 根據 "_" 進行分割,并返回一個列表
s2 = s1.rsplit("_")
print(s2)
print(type(s2))

# 指定了分割次數(從右側開始查找分隔符)
s3 = s1.rsplit("_",1)
print(s3)
print(type(s3))

運行結果:

rstrip(self, chars=None):

說明:和 lstrip() 類似,截掉字符串右側的空格或指定字符, chars 表示指定截掉的字符,默認為空格。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#截掉右側空格
s1  = "abcabc       "
s2 = s1.rstrip()
print(s2)

# 截掉右側指定字符 "*"
s3 = "abcabc***"
s4 = s3.rstrip("*")
print(s4)

運行結果:

split(self, sep=None, maxsplit=-1):

說明:和 rsplit() 類似,從左到右通過指定分隔符對字符串進行切片,并返回一個列表, sep 表示指定分割符,默認為空格, maxsplit 表示分割次數,默認全部分割。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abc_def_ghi"

# 根據 "_" 進行分割,并返回一個列表
s2 = s1.split("_")
print(s2)
print(type(s2))

# 指定了分割次數(從左側開始查找分隔符)
s3 = s1.split("_",1)
print(s3)
print(type(s3))

運行結果:

splitlines(self, keepends=None):

說明:根據換行進行分割,并返回一個列表, keepends 表示列表中是否包含換行符,默認不包含。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = """abc
def
ghi"""

# 根據換行分割 返回一個包含各行作為元素的列表,換行符不包括在結果列表里
l1 = s1.splitlines()
print(l1)

# 參數 keepends 為 True 則包含換行符 否則 不包含換行符
l2 = s1.splitlines(1)
print(l2)

運行結果:

startswith(self, prefix, start=None, end=None):

說明:判斷字符串是否是以指定字符開頭,如果是返回 Truestart 表示開始的位置, end 表示結束的位置。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "hello world"

# 查看這個字符串是否以 "he" 開頭
s2 = s1.startswith("he")
print(s2)

# 指定范圍,查看這個字符串是否以 "l" 開頭
s3 = s1.startswith("l",4,7)
print(s3)

運行結果:

strip(self, chars=None):

說明:和 lstrip()rstrip() 類似,截掉字符串左右兩側的空格或指定字符, chars 表示指定截掉的字符,默認為空格。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#截掉左右兩側側空格
s1  = "       abcabc       "
s2 = s1.strip()
print(s2)

# 截掉左右兩側指定字符 "*"
s3 = "***abcabc***"
s4 = s3.strip("*")
print(s4)

運行結果:

swapcase(self):

說明:字符串的大小寫字母進行轉換,大寫變小寫,小寫變大寫。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcABC"

#大寫變小寫,小寫變大寫
s2 = s1.swapcase()
print(s2)

運行結果:

title(self):

說明:返回 標題化 的字符串,就是說所有單詞都是以大寫開始,其余字母均為小寫。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "hEelo woRld"
s2 = s1.title()
print(s2)

運行結果:

translate(self, table):

說明:根據參數 table 給出的表將字符串中的字符進行轉換, table 表示轉換表,就是通過maketrans方法創建的表。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc"

# 根據 maketrans() 創建一個轉換表
dic = str.maketrans("ac","xl")

# 根據 translate() 進行轉換
s2 = s1.translate(dic)
print(s2)

運行結果:

upper(self):

說明:將字符串中的小寫字母轉換為大寫字母。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc"

# 將小寫字母 轉換為 大寫字母
s2 = s1.upper()
print(s2)

運行結果:

zfill(self, width):

說明:返回指定長度的字符串,原字符串右對齊,左側填充 "0"width 定義總長度。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcabc"

# 原字符串右對齊,左側填充 "0"
s2 = s1.zfill(20)
print(s2)

運行結果:

12.3-索引:

可以根據每個元素的位置索引來找到對應的元素,位置索引又稱為下標,下標都是從 0 開始的。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"

# 獲取字符串中的第一個元素
print("第一個元素:",s1[0])

# 獲取字符串中的第四個元素
print("第四個元素:",s1[3])

# 獲取字符串中最后一個元素
print("最后一個元素:",s1[-1])

# 獲取字符串中倒數第三個元素
print("倒數第三個元素:",s1[-3])

運行結果:

12.4-查看字符串長度:

可以通過 len() 函數來查看字符串的長度。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"

# 獲取字符串的長度
print(len(s1))

運行結果:

12.5-切片:

即指定范圍來獲取多個元素, s1[2:8:2] 第一個數字表示起始下標稱為 下限 ,第二個數字表示結束下標稱為 上限 ,第三個數字表示間隔數稱為 步長 ,默認步長為 1 ,表示下限和上限之間的每一個元素都會出現在結果中。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"

# 獲取字符串中前三個元素
print("前三個元素:",s1[0:3])

# 從頭開始獲取時,可以忽略 下限
print("忽略下限:",s1[:3])

#取全部,不能填寫 -1
print("取全部填寫-1的:",s1[:-1])
print("取全部未填寫-1的:",s1[0:])

#每隔兩個兩個元素就獲取一個
print("隔兩個元素:",s1[::3])

運行結果:

12.6-str類型和bytes類型相互轉換

UTF-8 編碼,一個漢字三個字節,以 GBK 編碼,一個漢字兩個字節,一個字節是八位。

Python 3.5.1:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "zhongwen"
for i in s1:
    print(i)

s2 = "中文"
for i in s2:
    print(i)

運行結果:

通過上面的實例可以看出,在 Python 3.5.1 ,通過 for 循環字符串時,不管是字母還是中文,都是一個字符一個字符輸出的。

Python 2.7.2:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "zhongwen"
for i in s1:
    print(i)

s2 = "中文"
for i in s2:
    print(i)

運行結果:

通過上面的實例可以看出,而在 Python 2.7.2 中,通過 for 循環字符串時,是按照字節進行輸出的,所以在輸出中文的時候是亂碼,因為 UTF-8 編碼,一個漢字是三個字節,所以會輸出六個亂碼的字符。

str類型和bytes類型相互轉換:

Python 3.5.1 中,既可以把字符轉換成字節,也可以把字節轉換成字符,通過 bytes() 函數即可,可以將字符串轉換成字節。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "中"
for i in s1:
    print(i)
    b1 = bytes(i,encoding="utf-8")

#輸出十六進制,"\xe4"是十六進制的字符
    print(b1)

# 字節默認是以 十六進制 表示,而用 for 循環輸出每一個元素的時候,默認會輸出 十進制
# "228" 表示 十進制,"0b11100100" 表示 二進制
for s in b1:
    print("十進制:",s,"二進制:",bin(s))

運行結果:

def __init__(self, value='', encoding=None, errors='strict'): # known special case of str.__init__
    """
    str(object='') -> str
    str(bytes_or_buffer[, encoding[, errors]]) -> str

說明:通過源碼可以看出,str 接受兩個參數時,第一個參數需要是 bytes 對象, encoding 表示以什么編碼將字節轉換成字符串。

>>> b1 = bytes("中文",encoding="gbk")
>>> b1
b'\xd6\xd0\xce\xc4'
>>> s1 = str(b1,encoding="gbk")
>>> s1
'中文'

12.7-練習題:

通過while循環輸出a、b、c....案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"
start = 0
while start < len(s1):
    print(s1[start])
    start += 1

運行結果:

通過for循環輸出a、b、c....案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"
for i in s1:
    print(i)

運行結果:

通過for循環遇到c不輸出案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"
for i in s1:
    if i == "c":
        continue
    print(i)

運行結果:

通過for循環只輸出a案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "abcdefg"
for i in s1:
    if i == "b":
        break
    print(i)

運行結果:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容