Python实现语文老师默写挖空助手

上一期博客,我为大家介绍了我自己写的一套自动古诗文查询系统。当我们把我们想要的古诗文名字或者其中某句话输入系统时,它会自动将古文的全文打印出来。

今天我所写的这个功能就是基于上一期古诗文查询系统的。

这套系统大致效果是这样的:老师输入一篇古文,系统通过网站自动抓取所要古文,将古文中的一些字替换成下划线让学生们填空。

这套系统将解决一个语文老师很大的痛点:挖空古诗文时需要手动删去文章内容,再手动打出下划线。这套系统可以大大提升老师的办公效率。

逻辑梳理:

第一部分如何实现可以看我的上一期博客:Python实现自动古诗文查询系统_jordan_wang922的博客-CSDN博客

代码如下:

import requests
from bs4 import BeautifulSoup

poem = input("您需要查询的诗名或诗句:")
req = requests.get(url="https://so.gushiwen.cn/search.aspx?value=" + poem + "&valuej=" + poem[0])
req.encoding = "utf-8"
html = req.text
soup = BeautifulSoup(req.text, features="html.parser")
poem = soup.find("p", class_="source")
dd = poem.text.strip()
print(dd)
soup = BeautifulSoup(req.text, features="html.parser")
poem = soup.find("div", class_="contson")
ee = poem.text.strip()
print(ee)

我们会抓取到以下结果:

 接下来就到我们的第二部分,我的想法是这样的:古诗文中有许多逗号,我们可以用它来作为区分的点。如果没听懂,我用《出师表》举个例子:

先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。

通过逗号区分,就变为

['先帝创业未半而中道崩殂', '今天下三分', '益州疲弊', '此诚危急存亡之秋也。]

这一步其实非常简单,只需要用一行split语句就可以做的

这时候有一步非常关键:计算我们把整首古诗分成了几份,后面有大用

代码如下:

import requests
from bs4 import BeautifulSoup
from collections import Counter

# 随便定义一个list,也可以是自己生成的


print("老师您好,我是您的古诗文默写挖空助手")
poem = input("输入您需要挖空的古诗文:")
req = requests.get(url="https://so.gushiwen.cn/search.aspx?value=" + poem + "&valuej=" + poem[0])
req.encoding = "utf-8"
html = req.text
soup = BeautifulSoup(req.text, features="html.parser")
poem = soup.find("p", class_="source")
dd = poem.text.strip()
print(dd)
soup = BeautifulSoup(req.text, features="html.parser")
poem = soup.find("div", class_="contson")
ee = poem.text.strip()
ff = ee.split(",")  #区分
#print(ff)
temp = ff
count = Counter(ee)
# 输出元素3的个数
#print(count[','])  #计算有多少个逗号从而计算分成了几份
num = count[',']
gg = ",".join(ff)  #分完在将逗号还回去

接下来我们要做到是让它隔开替换,换句话说,我们需要系统挖一个空,隔一个,再挖。

这里我们需要通过一些代码找到奇数位,如1,3,5,7,9:

number = 1

while number < num:  #这里的num就是我们前面数的逗号的数量,不能超出这个数量
    # 如果number / 2 余数为 1,代表是奇数
    if number % 2 == 1:
        #print(number)
        order = number

    number += 1

最后一部就是替换了:

    hh = gg.replace(ff[order],"______")  #替换
    gg = hh  #变量每次都会换

最终代码如下:

import random

import requests
from bs4 import BeautifulSoup
from collections import Counter

# 随便定义一个list,也可以是自己生成的


print("老师您好,我是您的古诗文默写挖空助手")
poem = input("输入您需要挖空的古诗文:")
req = requests.get(url="https://so.gushiwen.cn/search.aspx?value=" + poem + "&valuej=" + poem[0])
req.encoding = "utf-8"
html = req.text
soup = BeautifulSoup(req.text, features="html.parser")
poem = soup.find("p", class_="source")
dd = poem.text.strip()
print(dd)
soup = BeautifulSoup(req.text, features="html.parser")
poem = soup.find("div", class_="contson")
ee = poem.text.strip()
ff = ee.split(",")
#print(ff)
temp = ff
count = Counter(ee)
# 输出元素3的个数
#print(count[','])
num = count[',']
gg = ",".join(ff)

#print(ff[x + 2])
#for x in range(10):


number = 1

while number < num:
    # 如果number / 2 余数为 1,代表是奇数
    if number % 2 == 1:
        #print(number)
        order = number

    number += 1
#print(hh)
    hh = gg.replace(ff[order],"______")
    gg = hh

print(hh)

运行效果如下:

 

 喜欢的话就点个赞吧!


版权声明:本文为jordan_wang922原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。