python全唐诗json文件基于作者姓名检索--以李白为例

python全唐诗json文件基于作者姓名检索--以李白为例

因为是边做边写的博客,文中我发现我的文学水平急待加强!
全唐诗竟然是按作者编卷的,那我做的意义在哪里???
写到一半,又不忍心删了,罢了罢了,哎~

文件来源

chinese-poetry
GitHub链接:https://github.com/chinese-poetry/chinese-poetry

单个文本分析

读取单个文本

import json
path="001.json"
f=open(path,'r',encoding='utf-8')
m=json.load(f)

print(m)
  1. 此处导入了json库,方便对json文件进行读取
  2. json.load函数将json文件转化为了python可识别的字典类型
  3. 注意:此处encoding需要明确,不然容易报错

结果展示,内容过长,仅显示一例

[{'title': '帝京篇十首', 'author': '李世民', 'biography': '帝姓李氏,諱世民,神堯次子,聰明英武。貞觀之治,庶幾成康,功德兼隆。由漢以來,未之有也。而銳情經術,初建秦邸,即開文學館,召名儒十八人爲學士。既即位,殿左置弘文館,悉引內學士,番宿更休。聽朝之間,則與討論典籍,雜以文詠。或日昃夜艾,未嘗少怠。詩筆草隸,卓越前古。至於天文秀發,沈麗高朗,有唐三百年風雅之盛,帝實有以啓之焉。在位二十四年,諡曰文。集四十卷。館閣書目,詩一卷,六十九首。今編詩一卷。', 'paragraphs': ['秦川雄帝宅,函谷壯皇居。綺殿千尋起,離宮百雉餘。', '連薨遙接漢,飛觀迥淩虛。雲日隱層闕,風煙出綺疏。', '岩廊罷機務,崇文聊駐輦。玉匣啟龍圖,金繩披鳳篆。', '韋編斷仍續,縹帙舒還卷。對此乃淹留,欹案觀墳典。', '移步出詞林,停輿欣武宴。雕弓寫明月,駿馬疑流電。', '驚雁落虛弦,啼猿悲急箭。閱賞誠多美,於茲乃忘倦。', '鳴笳臨樂館,眺聽歡芳節。急管韻朱弦,清歌凝白雪。', '彩鳳肅來儀,玄鶴紛成列。去茲鄭衛聲,雅音方可悅。', '芳辰追逸趣,禁苑信多奇。橋形通漢上,峰勢接雲危。', '煙霞交隱映,花鳥自參差。何如肆轍跡,萬里賞瑤池。', '飛蓋去芳園,蘭橈遊翠渚。萍間日彩亂,荷處香風舉。', '桂楫滿中川,弦歌振長嶼。豈必汾河曲,方為歡宴所。', '落日雙闕昏,回輿九重暮。長煙散初碧,皎月澄輕素。', '搴幌玩琴書,開軒引雲霧。斜漢耿層閣,清風搖玉樹。', '歡樂難再逢,芳辰良可惜。玉酒泛雲罍,蘭殽陳綺席。', '千鐘合堯禹,百獸諧金石。得志重寸陰,忘懷輕尺璧。', '建章歡賞夕,二八盡妖妍。羅綺昭陽殿,芬芳玳瑁筵。', '佩移星正動,扇掩月初圓。無勞上懸圃,即此對神仙。', '以茲遊觀極,悠然獨長想。披卷覽前蹤,撫躬尋既往。', '望古茅茨約,瞻今蘭殿廣。人道惡高危,虛心戒盈蕩。', '奉天竭誠敬,臨民思惠養。納善察忠諫,明科慎刑賞。', '六五誠難繼,四三非易仰。廣待淳化敷,方嗣雲亭響。'], 'notes': [''], 'volume': '卷一', 'no#': 1}

本文需要对姓名为李白的诗人所写的诗歌进行筛选

for item in m:
    if item["author"]=="李白":
        print(item["paragraphs"])

此处使用for循环,将每一条字典抽取出来,之后按照索引,把李白的诗歌提取

对全唐诗json文件进行整体分析

此处有几个小问题需要注意:

  1. 用for循环需要将数字转化为三位数的字符串,如将1变为001
  2. 注意在最前面添加for循环时的缩进问题
  3. 需要使用字符串添加,将“001”改变为“001.json”

代码展示

for i in range(900):
    num=str(i+1).zfill(3)
    path=num
    path+=".json"

结果展示

['三十六離宮,樓臺與天通。閣道步行月,美人愁煙空。', '恩疏寵不及,桃李傷春風。淫樂意何極,金輿向回中。', '萬乘出黃道,千旗揚彩虹。前軍細柳北,後騎甘泉東。', '豈問渭川老,寧邀襄野童。秋暮瑤池宴,歸來樂未窮。']

此处有方括号不太利于我们以后对于诗歌进行文本分析
本文此处对代码稍加改变下
原先代码

print(item["paragraphs"])

现在代码

print(",".join(item["paragraphs"]))

结果展示

三十六離宮,樓臺與天通。閣道步行月,美人愁煙空。,恩疏寵不及,桃李傷春風。淫樂意何極,金輿向回中。,萬乘出黃道,千旗揚彩虹。前軍細柳北,後騎甘泉東。,豈問渭川老,寧邀襄野童。秋暮瑤池宴,歸來樂未窮。

将这些结果全部放入一个txt文件中

with open("libai.txt", "a") as f:
	f.write("\n"+"《"+item["title"]+"》"+" "+",".join(item["paragraphs"]))

这里呢,再一次劝告兄弟们好好读书,不然写程序总在奇奇怪怪的地方浪费时间(lll¬ω¬)

《樂府雜曲:鼓吹曲辭:上之回》

我一直以为这个是乱码,调试了好半天/(ㄒoㄒ)/~~

全部代码展示

import json
for i in range(900):
    num=str(i+1).zfill(3)
    path=num
    path+=".json"
    f=open(path,'r',encoding='utf-8')
    m=json.load(f)

    for item in m:
        if item["author"]=="李白":
            with open("libai.txt", "a") as f:
                f.write("\n"+"《"+item["title"]+"》"+" "+",".join(item["paragraphs"]))
                print("\n"+item["title"],",".join(item["paragraphs"]))

就这样愉快的结束吧!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值