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阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容