Jupyter——輕量級數(shù)據(jù)處理分析利器

原文地址:https://blog.mariozzj.cn/posts/16cc73c/

鏡像地址:https://cnblog.mariozzj.cn/posts/16cc73c/

之前初學(xué)Python時同蜻,老師推薦的是Jetbrains出品的PyCharm作為IDE例嘱,對初學(xué)者而言感覺PyCharm非常實用员淫,但是隨著學(xué)習(xí)的深入也逐漸能感覺到使用PyCharm的一些缺陷:

  1. 不為項目創(chuàng)建虛擬環(huán)境的話,開啟項目需要花費較多時間導(dǎo)入包战惊;而創(chuàng)建虛擬環(huán)境又需要花時間安裝包,且徒占內(nèi)存甲献。
  2. 腳本文件是一次性全部運行的闲延。雖然可以使用debug功能打斷點,但是如果發(fā)現(xiàn)一小部分出錯還是需要重新全部運行告丢。在模型訓(xùn)練等過程中這種情況可能是致命的枪蘑。
  3. 僅在科學(xué)模式下能實時預(yù)覽matplotlib等可視化庫繪制的圖片,比較麻煩芋齿。
  4. 代碼注釋僅有#'''兩種形式腥寇,且不能富文本編輯,難以輔助代碼擴展和可理解觅捆。

因此赦役,需要一款能夠解決上述問題的IDE來加快數(shù)據(jù)科學(xué)學(xué)習(xí)和應(yīng)用過程——Jupyter Notebook。

Jupyter Notebook

Jupyter Notebook簡介

Jupyter Notebook是基于網(wǎng)頁的用于交互計算的應(yīng)用程序栅炒。其可被應(yīng)用于全過程計算:開發(fā)掂摔、文檔編寫术羔、運行代碼和展示結(jié)果。

——JupyterNotebook文檔

Jupyter Notebook

與PyCharm不同乙漓,Jupyter Notebook沒有獨立的GUI界面和桌面應(yīng)用程序级历,是通過瀏覽器來使用的。Jupyter Notebook既可以安裝在本機電腦上通過本地服務(wù)器訪問叭披,也可以安裝在遠(yuǎn)程服務(wù)器上遠(yuǎn)程使用寥殖。

Jupyter Notebook解析的文件后綴名為.ipynb。該類文件是以json形式書寫涩蜘,但在Jupyter Notebook頁面內(nèi)主要解析為三種類型的塊(cell):代碼塊(code)嚼贡、文檔塊(markdown)、純文本(Raw NBConvert)同诫。

  • 代碼塊包含代碼片和輸出片粤策。Jupyter Notebook原名IPython Notebook,對Python語言提供支持误窖,書寫的Python代碼支持代碼高亮叮盘,支持注釋、縮進(jìn)霹俺、Tab補全等基礎(chǔ)功能柔吼。輸出部分,相比于Pycharm等接近cmd只支持文字輸出吭服,Jupyter在瀏覽器中可以渲染出DataFrame表格嚷堡、可交互的PyeCharts圖形、Matplotlib圖片等基于html艇棕、svg蝌戒、png等格式的輸出。

    Code Cell
  • 文檔塊原生支持Markdown語法沼琉,可以進(jìn)行簡單的富文本編輯和多媒體插入北苟,同時也支持Latex語法的解析,可以輸入數(shù)學(xué)說明打瘪。

    Markdown Cell

用戶可以自由控制插入代碼塊和文檔塊友鼻,形成交錯易于解釋說明,同時也可自由控制代碼運行順序闺骚,環(huán)境啟動后運行的代碼塊中保留的變量不會被刪除彩扔,可以跨代碼塊在其他塊中使用。

您可以訪問Jupyter官網(wǎng)僻爽,在線試用JupyterNotebook虫碉。

安裝與啟動

Jupyter官網(wǎng)也給出了安裝教程,摘錄如下:

如果您已經(jīng)安裝了conda胸梆,可以使用conda進(jìn)行安裝敦捧。在CMD/Terminal輸入如下命令:

conda install -c conda-forge notebook

或者须板,如果您想使用pip安裝,在安裝好pip之后可以在CMD/Terminal輸入如下命令:

pip install notebook

安裝完成后兢卵,在CMD/Terminal中輸入如下命令即可啟動:

jupyter notebook

一般而言习瑰,系統(tǒng)會幫您在默認(rèn)瀏覽器打開Jupyter Notebook主界面(文件系統(tǒng)),如果沒有自動打開秽荤,您也可以參照命令行輸出在瀏覽器自行進(jìn)入甜奄。

簡單使用

基礎(chǔ)操作

文件列表頁面

Notebook 文件列表

在目錄頁面,用戶可以新建空腳本文件進(jìn)行編輯王滤,也可以新建終端以Shell操作目錄(因此贺嫂,可以進(jìn)行包的安裝)滓鸠。Jupyter Notebook會對ipynb腳本文件進(jìn)行渲染雁乡,但同時也能夠以純文本打開其他文件。在此頁面選中文件可以選擇終止運行糜俗、復(fù)制踱稍、重命名、打開悠抹、下載珠月、刪除等操作。

腳本頁面

Jupyter Notebook 腳本頁面

腳本頁面楔敌,用戶可以點擊文件名進(jìn)行文件的重命名啤挎,可以通過菜單欄和功能區(qū)進(jìn)行一些操作。就基礎(chǔ)操作而言卵凑,用戶可以使用功能區(qū)的+按鈕添加單元格庆聘,使用運行按鈕執(zhí)行代碼塊或渲染文檔塊,使用下拉欄調(diào)整塊的類型勺卢。

當(dāng)然伙判,也可以通過單擊代碼塊旁的運行鍵來執(zhí)行代碼塊。

基礎(chǔ)快捷鍵

Jupyter Notebook的快捷鍵較多黑忱,這里按單元格的兩種模式分別歸納宴抚。單元格模式可分為命令模式和編輯模式,主要區(qū)別在單元格框線的顏色以及內(nèi)容是否可編輯甫煞,如圖菇曲。

Jupyter Notebook 單元格模式

命令模式

  • Enter:轉(zhuǎn)為編輯模式

  • Shift+Enter:運行本單元格并選中下個單元格

  • Ctrl+Enter:運行本單元格

  • Alt+Enter:運行本單元格并在下方插入新單元格

  • Y:單元格變?yōu)榇a狀態(tài)

  • M:單元格變?yōu)槲臋n狀態(tài)

  • / K:選中上方單元格

  • / J:選中下方單元格

  • A:在上方插入新單元格

  • B:在下方插入新單元格

  • C / X / V :復(fù)制 / 剪切 / 粘貼單元格

  • D:刪除單元格

  • 長按Shift可連續(xù)選中

僅列舉部分常用快捷鍵。如需獲取全部快捷鍵抚吠,可以在命令模式下按H進(jìn)入快捷鍵幫助查看所有的快捷鍵常潮。

編輯模式

  • Esc:進(jìn)入命令模式
  • Shift+Enter:運行本單元格并選中下個單元格
  • Ctrl+Enter:運行本單元格
  • Alt+Enter:運行本單元格并在下方插入新單元格
  • Tab:縮進(jìn) / 代碼補全
  • Shift+Tab:查看工具提示
  • Ctrl+]:縮進(jìn)
  • Ctrl+[:取消縮進(jìn)
  • Ctrl+/:注釋當(dāng)前行 / 選中內(nèi)容
  • Ctrl+Z:撤銷
  • Ctrl+Y:重做
  • Ctrl+A:全選
  • Ctrl+S:保存

文件操作

Notebook 腳本下載

可以在菜單欄的Files菜單中選擇各類文件操作,如新建埃跷、打開蕊玷、保存等邮利。

您可以給腳本設(shè)置檢查點,便于版本回溯和重置垃帅。

同時也可以將其下載或?qū)С鰹槠渌袷窖咏欤阌诜窒怼⒋蛴∶吵稀l(fā)布等操作方庭。在之后的進(jìn)階操作中還會再提及。

進(jìn)階技巧

啟動命令參數(shù)

安裝與啟動中已經(jīng)介紹過在CMD/Terminal中的啟動方法:

jupyter notebook

執(zhí)行命令后酱固,終端會顯示一系列服務(wù)器信息:

$ jupyter notebook
[I 08:58:24.417 NotebookApp] Serving notebooks from local directory: /Users/catherine
[I 08:58:24.417 NotebookApp] 0 active kernels
[I 08:58:24.417 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
[I 08:58:24.417 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

出現(xiàn)以上信息表示服務(wù)開啟成功械念,瀏覽器會自動打開窗口進(jìn)入主界面。

端口

默認(rèn)情況下一個Jupyter Notebook進(jìn)程會占用一個端口运悲,默認(rèn)從8888開始龄减,如果端口被占用則選用鄰近端口如8889、8890等班眯。我們可以在啟動時指定端口:

jupyter notebook --port <port_number>

其中<port_number>為指定的端口號希停。

文件目錄

一般而言打開Jupyter Notebook會進(jìn)入默認(rèn)的文件路徑,有的時候我們想要打開不再默認(rèn)路徑下的腳本文件署隘,就可以選擇指定目錄啟動:

jupyter notebook <dir>

其中<dir>為需要打開的目錄宠能,可以是相對路徑也可以是絕對路徑。

例如磁餐,在Windows下违崇,我們可以在文件資源管理器的地址欄輸入cmd來快速啟動命令行,隨后僅需鍵入jupyter notebook ./即可在Jupyter Notebook中打開當(dāng)前目錄诊霹。

啟動操作

或者羞延,如果需要直接更改默認(rèn)文件目錄,只需要進(jìn)行配置文件的修改畅哑。方法如下:

  1. 首先肴楷,在命令行輸入命令得到j(luò)upyter notebook的安裝地址:

    $ jupyter notebook --generate-config
    
    Overwrite C:\Users\PM\.jupyter\jupyter_notebook_config.py with default config? [y/N]y
    Writing default config to: C:\Users\PM\.jupyter\jupyter_notebook_config.py
    

    可以看到返回中給出了jupyter notebook的安裝地址,配置文件在此目錄下荠呐。

  2. 前往該目錄赛蔫,使用vim等文本編輯方法編輯目錄下的jupyter_notebook_config.py文件,找到如下代碼段:

    ## The directory to use for notebooks and kernels.
    #c.NotebookApp.notebook_dir = ''
    

    將第二行內(nèi)容取消注釋泥张,并將引號內(nèi)更改為您需要指定的工作空間地址即可呵恢。

隨后重新啟動Jupyter Notebook即可在指定空間打開。

主題更換方法

基于Jupyterthemes

Jupyter Notebook默認(rèn)主題為淺色主題媚创,雖然文字顯示清晰渗钉,但長時間使用可能對眼睛刺激較大。我們可以借用Jupyterthemes插件來為Notebook更換合適的主題。

首先在CMD/Terminal輸入如下命令安裝Jupyterthemes插件:

pip install jupyterthemes

安裝完成后即可使用鳄橘。該庫在使用時僅取兩首字母jt為命令声离。完整的命令格式如下:

jt  [-h] [-l] [-t THEME] [-f MONOFONT] [-fs MONOSIZE] [-nf NBFONT]
    [-nfs NBFONTSIZE] [-tf TCFONT] [-tfs TCFONTSIZE] [-dfs DFFONTSIZE]
    [-m MARGINS] [-cursw CURSORWIDTH] [-cursc CURSORCOLOR] [-vim]
    [-cellw CELLWIDTH] [-lineh LINEHEIGHT] [-altp] [-altmd] [-altout]
    [-P] [-T] [-N] [-r] [-dfonts]

例如,使用如下命令

jt -t monokai -ofs 10 -nfs 13 -tfs 13 -fs 12 -T -N -lineh 140

表明使用monokai主題瘫怜,輸出字體大小10术徊,notebook字體大小13,文檔塊字體大小13鲸湃,代碼字體大小12赠涮,展示工具欄,展示文檔名和logo暗挑,行高140笋除。

完整的參數(shù)解釋見jupyter-theme官方倉庫。

使用jt -l命令可以查看目前安裝的主題:

$ jt -l

Available Themes:
   chesterish
   grade3
   gruvboxd
   gruvboxl
   monokai
   oceans16
   onedork
   solarizedd
   solarizedl
主題展示

上圖展示了部分主題樣式基本情況炸裆,可根據(jù)喜好自行更換主題垃它。

使用jt -r命令則可以重置主題。

基于Stylish

因為Jupyter Notebook是在瀏覽器呈現(xiàn)晒衩,那么任意形式的更換樣式表就可以實現(xiàn)對主題的修改嗤瞎。例如較為著名的Stylish插件的社區(qū)中就有很多開發(fā)者分享了自己定制的Jupyter Notebook主題,這些主題的呈現(xiàn)效果整體上優(yōu)于jupyterthemes听系。

Stylish官網(wǎng)

Stylish-Chrome插件下載

而且,如果您熟練掌握CSS語法虹菲,也可以自行基于Stylish定制合適的Jupyter Notebook主題靠胜。

Stylish 暗黑主題效果

魔法命令

魔法命令在代碼塊中執(zhí)行,但是不屬于Python語言的代碼级及。使用魔法命令可以在執(zhí)行代碼的同時執(zhí)行附加效果掺栅。

執(zhí)行Shell命令

執(zhí)行Shell命令并不是魔法命令的一部分硕并,但是功能類似。

在代碼塊中鍵入!+shell命令即可在當(dāng)前目錄執(zhí)行址愿。

典型的應(yīng)用場景例如,當(dāng)我們需要使用某個包但是Jupyter Notebook所用環(huán)境中并沒有此包冻璃,那么就可以利用此特性响谓,在Notebook內(nèi)完成包的安裝。

!pip install selenium
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting selenium
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/80/d6/4294f0b4bce4de0abf13e17190289f9d0613b0a44e5dd6a7f5ca98459853/selenium-3.141.0-py2.py3-none-any.whl (904 kB)
     |████████████████████████████████| 904 kB 1.2 MB/s eta 0:00:01
Requirement already satisfied: urllib3 in /root/anaconda3/lib/python3.8/site-packages (from selenium) (1.25.9)
Installing collected packages: selenium
Successfully installed selenium-3.141.0

或者省艳,我們共享腳本給他人運行時娘纷,需要其下載一些文件,就可以使用wget命令來下載:

!wget https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531810/test_a.csv.zip
--2021-01-08 21:51:25--  https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531810/test_a.csv.zip
Resolving tianchi-competition.oss-cn-hangzhou.aliyuncs.com (tianchi-competition.oss-cn-hangzhou.aliyuncs.com)... 118.31.232.194
Connecting to tianchi-competition.oss-cn-hangzhou.aliyuncs.com (tianchi-competition.oss-cn-hangzhou.aliyuncs.com)|118.31.232.194|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 61986708 (59M) [application/zip]
Saving to: ‘test_a.csv.zip’

100%[======================================>] 61,986,708  14.6MB/s   in 4.0s   

2021-01-08 21:51:30 (14.9 MB/s) - ‘test_a.csv.zip’ saved [61986708/619867

常用魔法命令

%run

%run 腳本文件地址

可以在接下來的代碼塊中運行指定的腳本文件跋炕。

%time系列

%time {一行代碼}
%%time 
{代碼塊剩余內(nèi)容}

%timeit {一行代碼}
%%timeit
{代碼塊剩余內(nèi)容}

使用%time和%%time可以計算一行/一個單元格內(nèi)的代碼執(zhí)行一次所需的時間赖晶。這在模型訓(xùn)練和大文件讀取時是很實用的,有助于使用者把握時間和環(huán)境性能辐烂。

而%timeit和%%timeit會將指定代碼內(nèi)容執(zhí)行很多次遏插,最后計算出平均運行所需時間捂贿,一般用于算法的評估。

%whos

該命令可以查看本腳本中仍在占用內(nèi)存的變量的類型和值等情況

j = 9
i = 10
s = "This is a String"

%whos
Variable   Type         Data/Info
---------------------------------
i          int          10
j          int          9
np         module       <module 'numpy' from '/ro<...>kages/numpy/__init__.py'>
pd         module       <module 'pandas' from '/r<...>ages/pandas/__init__.py'>
s          str          This is a String

%del %reset

使用%del可以刪除某個變量胳嘲;使用%reset可以清除所有變量眷蜓。

%load

使用%load可以加載腳本文件內(nèi)容并填充到代碼塊中。值得一提的是%load后不僅可以接本地計算機上的絕對地址和相對地址胎围,還可以接其他服務(wù)器的地址吁系,例如使用%load獲取某網(wǎng)頁的原代碼:

%load http://crafts.mariozzj.cn/

%matplotlib inline

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
plt.plot(np.arange(20))

在使用matplotlib繪圖之前寫上這樣一行魔法命令可以讓繪制出的圖片直接顯示在輸出區(qū)域。

導(dǎo)出

Jupyter Notebook的代碼塊和文檔塊可以以合適的形式導(dǎo)出白魂,導(dǎo)出的格式包括HTML汽纤、LaTeX、Markdown福荸、PDF等蕴坪。

導(dǎo)出的Markdown中,普通文檔塊成為Markdown文檔敬锐,而代碼塊成為Markdown的代碼塊背传,輸出部分也成為代碼塊(輸出的圖片、表格等不在代碼塊內(nèi)台夺,但是仍然會有效保存)径玖。

導(dǎo)出的PDF是經(jīng)由LaTeX轉(zhuǎn)化的,最大限度地保留了原始腳本的呈現(xiàn)效果颤介,在代碼塊和輸出區(qū)旁會顯示In/Out+編號梳星,調(diào)整適配到合適的紙張大小。需要注意的是在Jupyter Notebook中直接導(dǎo)出PDF滚朵,不支持顯示中文冤灾,但是也有可以導(dǎo)出含中文PDF的方法。

  1. 經(jīng)由md導(dǎo)出PDF

    在Jupyter Notebook中以markdown格式導(dǎo)出文件后辕近,使用Typora等markdown文本編輯器再對格式進(jìn)行轉(zhuǎn)換韵吨,可以生成PDF以供打印或?qū)С觥S捎谵D(zhuǎn)換為PDF的過程是在編輯器中進(jìn)行的移宅,所以最終格式是由編輯器決定的归粉,而且不會保留IN/OUT標(biāo)注等信息。

  2. 經(jīng)由LaTeX導(dǎo)出PDF

    在Jupyter Notebook中可以以LaTeX格式導(dǎo)出吞杭,隨后可以用LaTeX編輯器進(jìn)行轉(zhuǎn)換盏浇,或者采取以下步驟以使轉(zhuǎn)換的PDF支持顯示中文:

    1. 安裝MiKTeX。下載鏈接

    2. 生成LaTeX文件芽狗,可以在CMD/Terminal中進(jìn)入腳本文件所在目錄绢掰,輸入jupyter nbconvert --to latex 文件名.ipynb,等待后生成文件名.tex文件。

    3. 使用文本編輯器打開文件名.tex文件滴劲,在\documentclass{article}后或\documentclass[11pt]{article}后或\documentclass[11pt]{ctexart}后插入以下兩行語句攻晒,保存。

      \usepackage{fontspec, xunicode, xltxtra}
      \usepackage{ctex}
      \setmainfont{Microsoft YaHei}
      
    
    
  3. 再在CMD/Terminal中輸入xelatex 文件名.tex即可完成轉(zhuǎn)化班挖,生成的文件名.pdf在同目錄下鲁捏。

    轉(zhuǎn)換操作

升級體驗

Jupyter Notebook 已經(jīng)展現(xiàn)出了它在數(shù)據(jù)分析與處理方面的便捷性,但是使用下來還是有一些體驗可以優(yōu)化萧芙,例如:

  • 相比于傳統(tǒng) IDE给梅,文件目錄和腳本操作頁面是分開的,如果需要切換文件可能比較麻煩
  • Notebook 需要先單獨在終端啟動双揪,才具有查看 .ipynb 文件的能力动羽,不能直接雙擊打開

這里提供兩個能夠緩解上述使用痛點的工具,因為只是升級體驗渔期,這兩個工具的基本使用和 Notebook 類似运吓,就不再贅述。

JupyterLab

Jupyter Lab 和 Jupyter Notebook 一樣同屬于 Jupyter Project疯趟,二者在使用上幾乎一致拘哨,個人認(rèn)為 Jupyter Lab 是在 Notebook 基礎(chǔ)上進(jìn)行了升級。

安裝與啟動

Jupyter官網(wǎng) 也給出了安裝教程信峻,摘錄如下:

如果您已經(jīng)安裝了conda倦青,可以使用conda進(jìn)行安裝。在 CMD/Terminal 輸入如下命令:

conda install -c conda-forge jupyterlab

或者站欺,如果您想使用pip安裝姨夹,在安裝好pip之后可以在 CMD/Terminal 輸入如下命令:

pip install jupyterlab

安裝完成后,在 CMD/Terminal 中輸入如下命令即可啟動:

jupyter-lab

一般而言矾策,系統(tǒng)會幫您在默認(rèn)瀏覽器打開 Jupyter Lab 主界面(文件系統(tǒng)),如果沒有自動打開峭沦,您也可以參照命令行輸出在瀏覽器自行進(jìn)入贾虽。

界面展示

Lab 最主要變化在于在頁面左側(cè)加入了文件目錄,打開的標(biāo)簽頁以內(nèi)嵌標(biāo)簽頁而不是瀏覽器標(biāo)簽頁展示吼鱼。

Jupyterlab 主界面

.ipynb 文件的操作蓬豁,Lab 和 Notebook 完全相同,因此切換成本很低菇肃!

同時地粪,Jupyter Lab 支持渲染 csv 等結(jié)構(gòu)化數(shù)據(jù)為表格形式,對純文本文件也可以直接編輯琐谤。

Jupyter Lab 表格渲染

VS Code

VS Code 是一款強大輕量級 IDE蟆技,支持豐富的語言拓展,同時還有多種強力插件。

安裝與啟動

如果沒有安裝 VS Code质礼,可以前往官方頁面下載安裝: Download Visual Studio Code - Mac, Linux, Windows

如果已安裝 VS Code旺聚,但是沒有安裝 Python,可以在擴展頁面安裝:

VSC安裝擴展-Python

VS Code 安裝 Jupyter 擴展后眶蕉,就可以支持渲染 .ipynb 文件了砰粹,在擴展頁面安裝即可:

VSC安裝擴展-Jupyter

界面展示

VS Code 對 .ipynb 腳本的頁面操作也很類似,同時也支持文件樹造挽、版本控制等碱璃,相對而言功能更加強大。

VS Code 相對于 Notebook 的提升在于:增加了文件目錄饭入,同時能夠在文件夾中直接雙擊 .ipynb 文件打開預(yù)覽嵌器,不需要啟動服務(wù)就可以渲染查看。

VSCode 主界面
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末圣拄,一起剝皮案震驚了整個濱河市嘴秸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庇谆,老刑警劉巖岳掐,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饭耳,居然都是意外死亡串述,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門寞肖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纲酗,“玉大人,你說我怎么就攤上這事新蟆∶偕蓿” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵琼稻,是天一觀的道長吮螺。 經(jīng)常有香客問我,道長帕翻,這世上最難降的妖魔是什么鸠补? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮嘀掸,結(jié)果婚禮上紫岩,老公的妹妹穿的比我還像新娘。我一直安慰自己睬塌,他們只是感情好泉蝌,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布歇万。 她就那樣靜靜地躺著,像睡著了一般梨与。 火紅的嫁衣襯著肌膚如雪堕花。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天粥鞋,我揣著相機與錄音缘挽,去河邊找鬼。 笑死呻粹,一個胖子當(dāng)著我的面吹牛壕曼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播等浊,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼腮郊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了筹燕?” 一聲冷哼從身側(cè)響起轧飞,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎撒踪,沒想到半個月后过咬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡制妄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年掸绞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耕捞。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡衔掸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俺抽,到底是詐尸還是另有隱情敞映,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布磷斧,位于F島的核電站驱显,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瞳抓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一伏恐、第九天 我趴在偏房一處隱蔽的房頂上張望孩哑。 院中可真熱鬧,春花似錦翠桦、人聲如沸横蜒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丛晌。三九已至仅炊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間澎蛛,已是汗流浹背抚垄。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谋逻,地道東北人呆馁。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像毁兆,于是被迫代替她去往敵國和親浙滤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

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