# python 高级应用-- 第六章

6-1 如何读写csv数据

<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">实际案例</mark>:我们可以通过雅虎网站获取中国股市(深市(数据集,它以csv的格式存储

http://table.finance.yahoo.com/table.csv?s=000001.sz

数据存储格式:

Date, open, Hige, Low, Close, Volume, Adj, Close

2016-06-30, 8.69, 8.74, 8.66, 8.70, 36220400, 8.70

请将平安银行这只股票,在2016年中成交量超过50000000的记录存储到另外一个csv文件中。

<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">解决方案</mark>

使用标准库中的csv模块,可以使用其中的reader 和writer 完成csv文件的读写。

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="python" contenteditable="true" cid="n11" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">import urllib import urlretrieve
urlretrieve('http://table.finance.yahoo.com/table.csv?s=000001.sz','pingan.csv') #下载文件,第一个参数为url,第二个参数为保存的文件名
cat pingan.csv | less #查看文件
import csv
rf = open('pingan.csv','rb') #打开文件,’b'表示使用二进制形式打开
reader=csv.reader(rf) # 读入文件,为迭代器
reader.next() #迭代器只能用next进行迭代,不能用for迭代
wf = open('pingan_copy.csv', 'wb')
writer=csv.writer(wf) # 创建一个writer的写
writer.writerow(['Date', 'open', 'Hige', 'Low', 'Close', 'Volume', 'Adj', 'Close']) # writerow可以一行一行写入
writer.writerow(reader.next()) #直接将迭代的内容写入
wf.flush() #目的使得能看到里面的内容,即缓冲完成
cat pingan_copy.csv | less
​</pre>

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="python" contenteditable="true" cid="n12" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">import csv

with open('pingan.csv','rb') as rf:
reader = csv.reader(rf) #创建reader
with open('pingan.csv', 'wb') as wf:
wtiter= csv.writer(wf) #创建writer
headers=reader.next() #将表头读取
writer.writerow(headers) #将表头信息写到文件中
for row in reader: 对reader进行迭代
if row[0] < '2016-01-01':
break
if int(row[5]) >= 50000000:
writer.writerow(row)
print('end')
</pre>

6-2 如何读写json数据?

<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">实际案例</mark>

在web应用中肠用JSON(javascript object Notation)格式传输数据,例如我们利用百度语音识别服务器做语音识别,将本地音频数据post到百度的语音识别服务器,服务器响应结果为json字符串。

{‘corpus_no':'737419413412412414','err_msg': 'success', 'err_no': '0', 'result':['你好’,‘’],'sn' : '3275935789476025'}

下python中如何读写json数据,如何转换成python对象

<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">解决方案</mark> 使用标准库中的json模块,其中loads, dumps函数可以完成json数据的读写

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="python" contenteditable="true" cid="n20" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">import json

json下有一个方法,叫做dumps,可以将python对象转换成json字符串

l =[1,2,'abe', {'name':'Bob', 'age': 13}]
json.dumps(l) #转换成一个json对象
d= {'b': None, 'a': 'S', 'c': 'abc'}
json.dumps(d) #在json字符串中,None变成了null字符串

dumps参数的调整

json.dumps(l, separators=[',', ':']) #默认的分隔符是‘ ,’就是逗号前面还有一个空格,我们设置为只有逗号。

对输出的字段中的键进行排序:

json.dumps(d, sort_keys=True)

json 对象转换成python对象:

l2=json.loads([1,2,'abe', {'name':'Bob', 'age': 13}])
l2[0] #可以进行索引

d2= json.loads('{'b': Nono, 'a': S, 'c': 'abc'}')
d2['a'] #想字典一样进行索引

load 和loads, dump 和dumps的功能是抑制的,但是没有加s的接口是文件。

with open('demo,json','wb') as f:
json.dump(l,f) #运行结果就是将l以json的形式写入到文件中。

with open('demo.py', 'wb') as f:
json.load('{'b': Nono, 'a': S, 'c': 'abc'}', f) #将这个json对象写入到f文件中。
</pre>

6-3 如何解析简单的xml文档

xml是一种非常常用的标记性语言, 可以提供统一的方法来描述应用程序的结构化数据:

<?xml version="1.0"?>

<data>

<country name = "Liechtenstein">

<rank updated = "yes" >2</rank>

<year> 2008 </year>

<gdppc> 141100 </gdppc>

<neighbor name = "Austria" direction ="E"/>

<neighbor name = "Switzerland" direction = "W"/>

</country>

</data>

python中如何解析xml文档

<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">解决方案</mark> :使用标准库中的xml.etree.ElementTree, 其中的parse 函数可以解析xml文档。

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="python" contenteditable="true" cid="n37" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">from xml.etree.ElementTree import parse
f = open ('demo.xml')
et = parse(f)
root = et.getroot()
root.tag #查看标签
root.attrib #查看属性、
root.text #
root.text.strip()
root.getchildren()
for child in root:
print child.get('name')

root.find('country') #根据标签来寻找对象
root.findall('country') #找到全部标签为country的对象

也可以获得可迭代对象:

root.iterfind('country') #得到生成器对象
for e in root.iterfind('country'):print e.get('name')

只能找当前的直接子元素。


root.iter() #列出当前节点下全部的子元素
list(root.iter())
list(root.iter('rank'))
list(root.iter('neighbor'))

root.findall('country/*') #找它的孙子节点,匹配country下的所有节点
root.findall('.//rank') #无论rank在哪个层次下,都要找到
root.findall('.//rank/..') #在任意层次下找到rank,然后在找回它的父亲。
root.findall('country[@name]') #只有存在的属性才会被输出,没有这个属性的话就不会有值输出
root.findall('country[@name="Liechtenstein"]')
root.findall('country[rank]') #找到一个元素,其中必须包含某个tag
root.findall('country[rank="2"]') #找到指定的元素,其中rank中包含指定的文本。
root.findall('country[1]') #如果同样的子元素有多个的话,可用序号来进行引索
root.findall('country[last()]') #找到的是最后一个
root.findall('country[last()-1]') #找倒数第二个
​</pre>

6-4如何构建xml文档

<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">实际案例</mark>某些时候,我们需要将其他格式数据转换成xml,例如,我们需要把平安股票csv文件,转换成相应的xml:

pingan.csv

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" contenteditable="true" cid="n42" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">Date, Open, Hige, Low, Close, Volume, AdjClose

2016-06-30, 8.69, 8.74, 8.66, 8.70, 36220400, 8.70</pre>

pingan.xml

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="xml" contenteditable="true" cid="n44" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><Data>
<Row>
<Data> 2016-06-30</Data>
<Open> 8.69 </Open>
<High> 8.74</High>
<Low> 8.66 </Low>
<Close> 8.70 </Close>
<Volume> 36220400 </Volume>
<AdjClose> 8.70</AdjClose>
</Row>
</Data></pre>

<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">解决方案</mark> 使用标准库中的xml.etree.ElementTree,构建ElementTree,使用write方法写入文件

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="python" contenteditable="true" cid="n46" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">from xml.etree.ElementTree import Element,ElementTree
e=Element('Data') #标签
e.tag #查看标签

e.set('name','abc') #设置属性
e.get('name') #查看属性
from xml.etree.ElementTree import tostring

tostring(e) #检查这个元素及其属性
e.text='123' #为这个属性赋值


e.append() #添加子元素
e2=Element('Row')
e3=Element('Open')
e3.text='8.69' #为这个字符串赋值
e2.append(e3) #将e3作为e2的子元素
tostring(e2) #检查e2
e.text=None #将刚才的data的子元素去掉
e.append(e2)
tostring(e)

et=ElemenTree(e) #将e作为一个根节点
et.write('demo.xml')</pre>

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="python" contenteditable="true" cid="n47" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">import csv
from xml.etree.ElementTree import Element,ElementTree

下面的函数可以用来调整格式

def pretty (e, level=0):
if len(e) > 0:
e.text = '\n' + '\t' * (level +1)
for child in e:
pretty(child, level +1)
child.tail = child.tail[:-1]
e.tail = "\n" + "\t" * level

def csvToxml(fname):
with open(fname,'rb') as f:
reader=csv.reader(f)
header = reader.next()

root = Element('Data')
for row in reader:
eRow = Element('Row')
root.append(eRow)
for tag, text in zip(headers, row):
e = Element(tag)
e.text=text
eRow.append(e)
pretty(root)
return ElementTree(root)

et = csvToxml('pingan.csv')
et.write('pingan.xml') #格式不美观


</pre>

6-5 如何读写excel文件

<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">实际案例</mark>

Microsoft Excel 是日常办公中使用得最频繁的软件,其数据格式为xls,xlsx,一种非常常用的电子表格。

某小学某班的成绩,记录在excel文件中:

姓名 0,0 语文0,1 数学0,2 外语 0,3
李雷1.0 95 1,1 99 1,2 96 1,3
韩梅2.0 98 2,1 100 2,2 93 2,3
张峰3.0 94 3,1 95 3,2 95 3,3

利用python读取这个列表,并添加列为总分,并计算每个人的总分

<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">解决方案</mark> 使用pip安装=》$pip install xlrd xlwt

使用第三方库xlrd 和 xlwt, 这两个库分别用于excel 的读和写

使用xlrd来读excel文件

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="python" contenteditable="true" cid="n77" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">import xlrd
book=xlrd.open_workbook('demo.xlsx')

通过book 访问sheet

book.sheets() #返回一个列表,里面是所有的表
sheet = book.sheet_by_index(0) #这样的seet对应的是当前的表
sheet.nrows #访问所获取的列表的行数
sheet.ncols #访问所获取的列表的列数
cell=sheet.cell(0,0) #传入对应单元格的内容

cell 的属性:cell.ctype, cell.dump, cell.value, cell.xf_index

cell.ctype #返回cell的类型,所得到的类型可以使用xrld.XL 来查看参数,这里返回
xrld.XL_CELL_NUMBER #1
xrld.XL_CELL_TEXT #2
cell.value #返回的是Unicode
print cell.value #能够得到返回的值
cell=sheet.cell(1,1)
cell.ctype
cell.value

一次获取一列或者一行

sheet.row(1)
sheet.row_values(1) #直接返回第一行的值

sheet.row_values(rowx, start_colx=0, end_clox:None) 第一个参数是返回的行数,第二个参数是从那一列开始,第三个参数是终止的列

sheet.row_values(1,1) # 打印一行从第一个参数开始
sheet.col(1)
sheet.col_values() #方法和上面的sheet.row_values一样
sheet.put_cell(row, colx, ctype, value, xf_index)</pre>

使用 xlwt来写excel文件

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="python" contenteditable="true" cid="n79" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">import xlwt
wbook=xlwt.Workbook() #创建一个工作簿
wsheet=wbook.add_sheet('sheet1') #添加一个工作表
wsheet.write(r,c, label='') # 一个单元格一个单元格写入内容
wbook.save('output.xlsx') #保存表格
​</pre>

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="python" contenteditable="true" cid="n81" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">#coding:utf8
import xlrd, xlwt
rbook = xlrd.open_workbook('demo.xlsx')
rsheet = rbook.sheet_by_index(0)

nc=rsheet.ncols
rsheet.put_cell(0,nc,xlrd.XL_CELL_TEXT,u'总分',None)

for row in xrange(1,rsheet.nrows):
t=sum(rsheet.row_values(row,1))
rsheet.put_cell(row,nc,xlrd.XL_CELL_NUMBER, t, None)

wbook= xlwt.Workbook()
wsheet = wbook.add_sheet(rsheet.name)

style = xlwt.easyxf('align: vertical center, horizontal center')
for r in xrange(rsheet.nrows):
for c in xrange(rsheet.ncols):
wsheet.write(r,c,rsheet.cell_value(r,c),style)
wbook.save('output.xlsx')</pre>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容