Python 代码打造小 AI ,罗列博文笔记总索引列表,自动生成“我的博文笔记总索引”博文 HTML5 源码文本

news2024/11/24 17:18:06

Python 代码打造小 AI ,获取笔记信息,自动阅读量降序编排索引列表,生成 HTML5 源码文本。


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……

    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……

【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……

    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


Python 代码打造小 AI ,获取博文笔记阅读量
罗列博文笔记总索引列表
(自动降序编排索引列表,生成 HTML5 源码文本)


本文质量分:

91
本文地址: https://blog.csdn.net/m0_57158496/article/details/130272839

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆罗列博文笔记总索引列表
    • 1、久留心中的想法
    • 2、“自动”的署光
    • 3、“ AI ”算法
  • 4、代码流程
      • 4.1 笔记 ID 准备
      • 4.2 摘取笔记信息
      • 4.3 数据结构
      • 4.4 程序功用
        • 4.4.1 默认更新“我的HOT博”
        • 4.4.2 双线“并发”
        • 4.4.3 阅读量分级
      • 4.5 格式化笔记信息
      • 4.6 套用“笔记模板”
    • 5、效果截屏
    • 6、完整源码


◆罗列博文笔记总索引列表


1、久留心中的想法


  当在 CSDN 记录学习 Python 点滴,已成习惯时,总时不时关注其阅读量等信息。特别是在有了些阅读量的时候,更是每天都要关注,以此找些“存在感”,且达到乐此不疲的地步。PC 端有阅读量排序页面,但 app 目前没有,而我又是多用 app 的,因而时常感到有些“不适”。🤨
  当我的 CSDN 笔记,有了“模板”之后,就在文末拼上了阅读量过千(现在改为过 3k 了)的博文笔记索引列表。信息采集、排序以及页面源码,都是手动 CV 或键盘敲打,实在难搞。“数据来源”就是 PC 端的笔记阅读量排序页面,眼盯手写,完全刀耕火种。😂

  一直心想要“自动”。——这几乎成了我久久不散的心结。😜


回页目录

2、“自动”的署光


  当学到了 Linux 下的指令 curl 可以获取博文笔记源码文本时,看到了“自动”胜利在望的署光。😋

  当我可以用 re.findall 方法剥离出笔记的阅读量、点赞、踩、收藏、打赏、评论等数据时(可以点按蓝色文字跳转,翻阅笔记),我想要的“自动”已经呼之欲出,初现端倪。😜


获取到的博文阅读量等信息格式化输出效果
在这里插入图片描述
(您可以跳转移步学习笔记了解更多)


回页目录

3、“ AI ”算法


  • 笔记 ID 准备
    读取保存在本地磁盘的 csv 文本,解析出所有笔记的 ID 列表。

  • 摘取笔记信息
    遍历轮询 ID 列表,用 curl 指令拉取笔记页面源码文本, re.fall 方法剥离数据。

  • 数据结构
    我采用以字典 dict 的方式来存储采集到的笔记信息,阅读量为 key ,其余信息 info 为 value 。

  • 格式化笔记信息
    用 dict.keys() 方法取得阅读量列表 reads ,reads.sort(reserse=True) 方法对选取的阅读量列表排降序,遍历轮询 reads ,插值字符串格式化把笔记信息排列成自己想要的样子,用 HTML5 源码“模板”写入文本。

  • 套用“笔记模板”
    代码读入我的笔记头部 head 、body (笔记主体 body 就是一个超级“插值字符串格式化字符串”,她会把想说的变量所批对象,“插入”到模板指定的预设位置)、tail ,拼接成为“我的博文笔记总索引”笔记全篇源码文本。

      “我的博文笔记总索引”笔记生成过程全程“自动”,可惜最后一步,我无能力调用手机剪贴板,还需手动 CV 文本发布笔记。


回页目录

4、代码流程


通用模块和变量


# 本“工程”通用模块加载:
from os import system # 加载Python之Linux命令容器方法。
from re import findall # 加载正则表达式提取方法
from time import localtime # 加载当前系统时间“九”数组获取方法。
from time import time # 加载当前系统时间秒获取方法。


# 通用路径:
mydata_path = '/sdcard/Documents/' # 本“项目”存储文件路径,可据实更改。
mycsdn_path = 'https://blog.csdn.net/m0_57158496/article/details/' # 我的CSDN博文笔记路径


4.1 笔记 ID 准备


在这里插入图片描述
在这里插入图片描述


↑↑↑ 磁盘存储的笔记 ID 文本及 csv 文本结构↑↑↑
  读取保存在本地磁盘的 csv 文本,解析出所有笔记的 ID 列表。

ID 列表准备


    year = localtime()[0] # 取当前时间年份整数。
    article_infos = {} # 笔记信息字典,以“阅读量”为key。
    ids = [] # 笔记ID列表。

    for year in range(21, year%100 + 1): # 读取CSDN博文笔记ID。从2021年起,依次读入已发csdn博文笔记ID存储csv,直到当年。
        ids += read_blogid(f"{mydata_path}CSDN笔记发布足迹20{year}.txt") # 模板生成保存CSDN笔记IDcsv文档名,并调用函数读取博文笔记ID。


读取 id 函数


def read_blogid(filename):
    ''' 从文件读取博文地址 '''

    with open(filename) as f:
        return [line.split('\\')[2] for line in f.read().split('\n')[1:] if len(line.split('\\')) > 2]


回页目录


4.2 摘取笔记信息

  遍历轮询 ID 列表,用 curl 指令拉取笔记页面源码文本, re.fall 方法剥离数据。

拉取页面源码文本,并返回调用函数抽取的博文笔记阅读量等信息


 def get_data(url):
    ''' os.system('curl...')获取CSDN博文内容页面源码并提取数据 '''
    system(f"curl {url} > {mydata_path}csdn_get_bloghtml.txt") # 获取博文源码并保存到磁盘。

    with open(f'{mydata_path}csdn_get_bloghtml.txt') as f: # 读取保存的博文页面源码文本。
        text_html = f.read().split('<li class="tool-item tool-item-bar">')[0]

    if not html_error(text_html): # 获取博文页面源码错误,返回空白字符''。
        return # 拉取页面源码异常,返回空值 None 。
        
    return get_article_info(text_html) # 调用函数,从博文源码提取信息并返回提取到的博文笔记信息。


摘取博文笔记阅读量等信息函数


def get_article_info(blog):
    ''' re.findall方法提取各项信息,返回各项信息格式化字符串元组 '''
    title = ''.join(findall(r'var articleTitle = "([\u2003 \S]+)"', blog)) # 提取标题。
    #articleDesc = ''.join(findall(r'var articleDesc = "([\u2003 \S]+)"', blog)).split('。')[0] # 提取摘要。
    read = ''.join(findall(r'<span class="read-count">(\d+)</span>', blog)).strip() # 提取阅读量。
    active = findall(r'(\d*)\s*</span>\s*</a>\s*<div class="tool-hover-tip', blog) # 提取“点赞、踩、打赏、收藏、评论”数。
    active = tuple(map(lambda x: f"{x[0]}:{x[1]}" if x[1] else f"{x[0]}:0", zip(('点赞', ' 踩 ', '收藏', '打赏', '评论'), active)))  # “格式化”博文的点赞、踩、收藏、打赏、评论数据的“输出样式”。
    first = ''.join([''.join(i) for i in findall(r'>于&nbsp;([\S\s]+)&nbsp;\w*发布</span>', blog)]) # 提取首发时间。
    late = ''.join([''.join(i) for i in findall(r'<span class="time">\w+&nbsp;([\S\s]+)&nbsp;修改</span>', blog)]) # 提取最后修改时间。
    
    if first and late: # 如有修改:拼接博文首发、最后编辑时间信息。
        edit = f"于 {first} 首发,最晚于 {late} 修改。"
    elif first and not late: # 不曾修改编辑过。
        edit = f"于 {first} 发布。"
    else:
        edit = '' # 如果提取不到时间信息,“编辑信息”字符串置空。

    return read, title, active, edit # 返回提取的信息数据元组。


回页目录


4.3 数据结构

  我采用以字典 dict 的方式来存储采集到的笔记信息,阅读量为 key ,其余信息 info 为 value 。

article_infos 博文笔记阅读量等信息字典打造代码


    for myid in ids: # 遍历ID。
        print(myid)
        info = get_data(f"{mycsdn_path}{myid}") # 模板还原博文笔记地址url,调用函数获取博文笔记网页源码,并为您满星了哦哦,提取博文笔记信息。
 
        if info: # 阅读量信息不为空,以阅读量为key存入博文阅读量信息字典article-infos。
            info = list(info)
            info.insert(1, myid)
            article_infos[int(info[0])] = info[1:]
        else:
            input(f"\n{f'ID“{myid}”有误!':~^47}\n")
            continue # 提取博文笔记信息为空,继续下一轮遍历。


4.4 程序功用


  代码“功用”采用双线——写入文本和打印屏蔽交替进行,也也算是“并行”操作了吧。😄
  在默认的情况下,会先行更新“我的HOT博”(阅读量不小于 3k 的博文笔记索引列表),再生成“总索引”源码文本。

4.4.1 默认更新“我的HOT博”


  默认输出全部博文笔记索引,即阅读量不小于 0 的博文笔记。
  • 默认 n = 0

if __name__ == '__main__':
    
    while True: # 循环输入,直到正确输入。
        n = input(f"\n生成阅读量不小于n的博文笔记索引链接:\n{'':~^50}{'':>18}n = ").strip()

        if not n: # 默认不输入就输出全部处理的博文笔记。
            n = 0
            break
        
        try: # 输入排错。
            n = int(n)
            break
        except Exception as error:
            print(f"\nErrorType:\n{error}\n{'':~^50}\n{'输入错误!请重新输入。':^39}\n{'':~^50}\n")
    
    print(f"\n我的所有CSDN笔记阅读量列表:\n{get_blogread(n)}\n") # 调用主程序,自动处理我的博文笔记。

  • 默认更新热博,当 n != 0 ,提示更新

    if n: # 当 n = 0 ,即全部列印时,自动更新“我的热博”;反则“询问”更新。
        if input(f"\n{'':>8}排序热博?(Y/N) ") in list('Yy'):
            write_bolgindex(reads, article_infos, start_s, 3000) # 写入热博排序。
    else:
        write_bolgindex(reads, article_infos, start_s, 3000) # 写入热博排序。



4.4.2 双线“并发”


  同时将 HTML5 源码文本写入文本,博文笔记阅读量等信息格式化输出到屏幕。


    with open(filename, 'w') as f:
        for read in reads:
            myid, title, active, edit = article_infos.get(read) # 博文笔记信息赋值,方便后续格式化输出。
            print(f"阅读量:{read}\nID:{myid}\n标题:{title}\n{'   '.join(active)}\n{edit}\n\n") # 打印到屏幕。
            f.write(f"\n<li><a href='{mycsdn_path}{myid}' target=_blank>{title}</a><br>{read}<br><font color='gray' size=2>博文地址:<a href='{mycsdn_path}{myid}' target=_blank>{mycsdn_path}{myid}</a><br/>{'&emsp;&ensp;'.join(active)}<br>本篇博文笔记{edit}</font></li>") # 写入博文笔记索引(源码)。


4.4.3 阅读量分级


  设置阅读量等级菜单,用不同颜色标注博文笔记的阅读量。
  • 分级标签打印代码

        w_flag = th8_flag = th5_flag = th3_flag = th_flag = hun5_flag = True # 写入博文笔记索引列表分段标签开关“开”。

        for read in reads:
            flag_write = lambda x: f.write(f"\n</ol>\n<br />\n\n### <font color='gray' size=2><font color=#4F999F>◆</font> 阅读量小于<font color=#4F999F> {x} </font>的博文笔记<a href=#catalog>(回目录)</a></font>\n\n<ol reversed=reversed>")

            if not n:

                if 8000 < read < 10000 and w_flag and max_read > 10000:
                    flag_write('1w')
                    w_flag = False # 写入博文笔记索引列表分段标签开关“关”。
                elif 5000 < read < 8000 and th8_flag and max_read > 8000:
                    flag_write(8000)
                    th8_flag = False
                elif 3000 < read < 5000 and th5_flag and max_read > 5000:
                    flag_write(5000)
                    th5_flag = False
                elif 1000 < read < 3000 and th3_flag and max_read > 3000:
                    flag_write(3000)
                    th3_flag = False
                elif 500 < read < 1000 and th_flag and max_read > 1000:
                    flag_write(1000)
                    th_flag = False
                elif read < 500 and hun5_flag and max_read > 500:
                    flag_write(500)
                    hun5_flag = False

  • 用不同颜色标注阅读量

            # 在博文笔记索引页面用不同颜色区分打印不同高低的阅读量。
            if read > 10000:
                read = f"<font color='gold' size=5>( <b>{read}</b> 阅读)</font>" # 金色加粗特大。
            elif read > 9000:
                read = f"<font color='violet' size=4>( <b>{read}</b> 阅读)</font>" # 紫色加粗加大。
            elif read > 8000:
                read = f"<font color='red' size=4>( <b>{read}</b> 阅读)</font>" # 红色加粗加大。
            elif read > 7000:
                read = f"<font color=#4F999F size=3>( <i><b>{read}</b></i> 阅读)</font>" # “我的”绿。
            elif read > 6000:
                read = f"<font color='green' size=3>( <i><b>{read}</b></i> 阅读)</font>" # 绿色。
            elif read > 5000:
                read = f"<font color='deongaree'>( {read} 阅读)</font>" # 深蓝。
            elif read > 4000:
                read = f"<font color='blue'>( {read} 阅读)</font>" # 蓝色。
            elif read > 3000:
                read = f"<font color='cyan'>( {read} 阅读)</font>" # 青色。
            elif read > 2000:
                read = f"<font color='black' size=2>( {read} 阅读)</font>" # 黑色缩小。
            elif read > 1000:
                read = f"<font color='gray' size=2>( {read} 阅读)</font>" # 小灰。
            elif read < 1000:
                read = f"<font color='gray' size=1>( {read} 阅读)</font>" # 小小灰。


回页目录


4.5 格式化笔记信息

  用 dict.keys() 方法取得阅读量列表 reads ,reads.sort(reserse=True) 方法对选取的阅读量列表排降序,遍历轮询 reads ,插值字符串格式化把笔记信息排列成自己想要的样子,用 HTML5 源码“模板”写入文本。

  • 博文笔记索引模板
    • 代码

f"\n<li><a href='{mycsdn_path}{myid}' target=_blank>{title}</a><br>{read}<br><font color='gray' size=2>博文地址:<a href='{mycsdn_path}{myid}' target=_blank>{mycsdn_path}{myid}</a><br/>{'&emsp;&ensp;'.join(active)}<br>本篇博文笔记{edit}</font></li>" # 博文笔记索引(源码)模板。

  • 博文笔记索引模板
    • 效果
      在这里插入图片描述

4.6 套用“笔记模板”

  代码读入我的笔记头部 head 、body (笔记主体 body 就是一个超级“插值字符串格式化字符串”,她会把想说的变量所批对象,“插入”到模板指定的预设位置)、tail ,拼接成为“我的博文笔记总索引”笔记全篇源码文本。


  • “笔记模板”代码
#!/usr/bin/nve python
# coding: utf-8

mydata_path = '/sdcard/Documents/' # 本“项目”存储文件路径。

# 读取上一篇博文标题、地址。
with open(f'{mydata_path}CSDN笔记发布足迹2023.txt') as f:
    f.readline() # 读取csv文本第一行字段行,让文件指针移到下一行。
    last_blog_title, last_blog_id, last_blog_summary = f.readline().split('\\')[1:4] # 解析上篇博文标题、地址。
    last_blog_url = f"https://blog.csdn.net/m0_57158496/article/details/{last_blog_id}"

with open(f'{mydata_path}CSDN_my_hot_blog.txt') as f:
    myhotblog = f.read() # 读取“我的热博”。

# 读取笔记源码主体body文档字符串。
with open(f'{mydata_path}CSDN_newblog_body.txt') as f:
    title1, title0, title2 = f.readline()[:-1].split('\\') # 获取标题文本。
    body = eval(f.read()) # 读取CSDN新撰笔记正文Markdown语法源码body字符串为“插值字符串格式”字符串,并用eval()函数激活为Python代码。

all_text = '\n'.join([f"{title0},{title2}。", open(f'{mydata_path}CSDN笔记head.txt').read(), body, open(f'{mydata_path}CSDN笔记tail.txt').read()]) # 拼接CSDN新撰博文源码字符串。

try:
    
    with open(f'{mydata_path}CSDNnewblog.txt', 'w') as f:
        f.write(all_text) # 将新撰博文笔记源码字符串写入文本文档。

    print(f"\n\n{' 文件保存成功!':~^43}\n")

except Exceptions as error:
    print(f"\n\n{' 文件保存失败!':~^43}\n{error}\n")




回页目录

5、效果截屏

(点击此处跳过“截屏图片”,点击此处跳转“学习笔记”翻阅页面效果)


  • 代码运行效果
    在这里插入图片描述

    在这里插入图片描述

  • HTML5 源码文本
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  • 页面效果
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    (点击此处跳转“学习笔记”翻阅页面效果)



回页目录

6、完整源码

(源码较长,点此跳过源码)


完整源码太长,有 254 行。
不适合在这里贴出来。
已经打包上传 CSDN ,如感兴趣,请前往我的主页下载。


回页首

__上一篇:__ 进制转换的黄金万能算法(单纯、混合进制整数通吃,真正的黄金万能算法)
__下一篇:__ 

我的HOT博:

  本次共计收集 197 篇博文笔记信息,总阅读量 31.29w,平均阅读量 1588。已生成 19 篇阅读量不小于 3000 的博文笔记索引链接。数据采集于 2023-04-21 05:34:28 完成,用时 4 分 41.41 秒。


  1. 让QQ群昵称色变的神奇代码
    ( 53034 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:22   踩 :0  收藏:74  打赏:0  评论:16
    本篇博文笔记于 2022-01-18 19:15:08 首发,最晚于 2022-01-20 07:56:47 修改。
  2. ChatGPT国内镜像站初体验:聊天、Python代码生成等
    ( 45513 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/129035387
    点赞:123   踩 :0  收藏:783  打赏:0  评论:73
    本篇博文笔记于 2023-02-14 23:46:33 首发,最晚于 2023-03-22 00:03:44 修改。
  3. pandas 数据类型之 DataFrame
    ( 7883 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:6   踩 :0  收藏:23  打赏:0  评论:0
    本篇博文笔记于 2022-05-01 13:20:17 首发,最晚于 2022-05-08 08:46:13 修改。
  4. 罗马数字转换器|罗马数字生成器
    ( 6312 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    点赞:0   踩 :0  收藏:1  打赏:0  评论:0
    本篇博文笔记于 2022-01-19 23:26:42 首发,最晚于 2022-01-21 18:37:46 修改。
  5. Python字符串居中显示
    ( 5980 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    点赞:1   踩 :0  收藏:5  打赏:0  评论:1
    本篇博文笔记于 2021-12-26 23:35:29 发布。
  6. 斐波那契数列的递归实现和for实现
    ( 5267 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122355295
    点赞:4   踩 :0  收藏:2  打赏:0  评论:8
    本篇博文笔记于 2022-01-06 23:27:40 发布。
  7. 练习:字符串统计(坑:f‘string‘报错)
    ( 4842 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121723096
    点赞:0   踩 :0  收藏:1  打赏:0  评论:0
    本篇博文笔记于 2021-12-04 22:54:29 发布。
  8. 练习:尼姆游戏(聪明版/傻瓜式•人机对战)
    ( 4556 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121645399
    点赞:14   踩 :0  收藏:42  打赏:0  评论:0
    本篇博文笔记于 2021-11-30 23:43:17 发布。
  9. 个人信息提取(字符串)
    ( 4305 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:1   踩 :0  收藏:8  打赏:0  评论:0
    本篇博文笔记于 2022-04-18 11:07:12 首发,最晚于 2022-04-20 13:17:54 修改。
  10. 回车符、换行符和回车换行符
    ( 4283 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:0   踩 :0  收藏:2  打赏:0  评论:0
    本篇博文笔记于 2022-02-24 13:10:02 首发,最晚于 2022-02-25 20:07:40 修改。
  11. python清屏
    ( 4158 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    点赞:0   踩 :0  收藏:5  打赏:0  评论:0
    本篇博文笔记于 2021-10-14 13:47:21 发布。
  12. 密码强度检测器
    ( 3833 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121739694
    点赞:1   踩 :0  收藏:4  打赏:0  评论:0
    本篇博文笔记于 2021-12-06 09:08:25 首发,最晚于 2022-11-27 09:39:39 修改。
  13. 罗马数字转换器(用罗马数字构造元素的值取模实现)
    ( 3775 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122608526
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2022-01-20 19:38:12 首发,最晚于 2022-01-21 18:32:02 修改。
  14. 练习:班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法)
    ( 3500 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124424935
    点赞:1   踩 :0  收藏:2  打赏:0  评论:0
    本篇博文笔记于 2022-04-26 12:46:25 首发,最晚于 2022-04-27 21:22:07 修改。
  15. 练习:生成100个随机正整数
    ( 3451 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122558220
    点赞:1   踩 :0  收藏:3  打赏:0  评论:0
    本篇博文笔记于 2022-01-18 13:31:36 首发,最晚于 2022-01-20 07:58:12 修改。
  16. 我的 Python.color() (Python 色彩打印控制)
    ( 3296 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123194259
    点赞:2   踩 :0  收藏:7  打赏:0  评论:0
    本篇博文笔记于 2022-02-28 22:46:21 首发,最晚于 2022-03-03 10:30:03 修改。
  17. 练习:仿真模拟福彩双色球——中500w巨奖到底有多难?跑跑代码就晓得了。
    ( 3157 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/125415626
    点赞:3   踩 :0  收藏:4  打赏:0  评论:3
    本篇博文笔记于 2022-06-22 19:54:20 首发,最晚于 2022-06-23 22:41:33 修改。
  18. Python列表(list)反序(降序)的7种实现方式
    ( 3148 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:4   踩 :0  收藏:10  打赏:0  评论:8
    本篇博文笔记于 2022-12-11 23:54:15 首发,最晚于 2023-03-20 18:13:55 修改。
  19. 聊天消息敏感词屏蔽系统(字符串替换 str.replace(str1, *) )
    ( 3027 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124539589
    点赞:3   踩 :0  收藏:3  打赏:0  评论:3
    本篇博文笔记于 2022-05-02 13:02:39 首发,最晚于 2022-05-21 06:10:42 修改。
推荐条件 阅读量突破三千
(更多热博,请点击蓝色文字跳转翻阅)

回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


回页首

◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——寒佬(还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是学习的两大利器。

  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛

  • 靠谱程序员的好习惯


CSDN实用技巧博文:

    • 8个好用到爆的Python实用技巧
    • python忽略警告
    • Python代码编写规范
    • Python的docstring规范(说明文档的规范写法)

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/448156.html

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

    相关文章

    依赖自动装配

    自动配置 前面花了大量的时间把Spring的注入去学习了下&#xff0c;总结起来就一个字麻烦。 问:麻烦在哪? 答:配置文件的编写配置上。 问:有更简单方式么? 答:有&#xff0c;自动配置 什么是自动配置以及如何实现自动配置&#xff0c;就是接下来要学习的内容&#xf…

    English Learning - L2-16 英音地道语音语调 语调 2023.04.20 周四

    English Learning - L2-16 英音地道语音语调 语调 2023.04.20 周四 语调降调升调降升升降 语调如何正确的表情达意用降调的句型用升调的句型用降升调的句型升降调 & 平调 回顾词重音句重音弱读语音语调四步法 存档音频 语调 降调 重音音节降 升调 一般表示不确定&#xf…

    进制转换—包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细

    目录 1.进制转换必备知识&#xff1a; 1.1 二进制逢2进1 8进制逢8进1 10进制逢10进1 16进制逢16进1 1.2为了区分二、八、十、十六进制&#xff0c;我们通常在数字后面加字母进行区分 2. 二进制与八进制、十六进制相互转换 2.1 二进制转八进制 2.2 八…

    移动电视双天线分集接收技术解决方案

    移动电视双天线分集接收技术 随着DVB-T在手机电视、车载电视、楼宇电视、地铁电视等户外广播领域内的发展&#xff0c;在这些接收范围内&#xff0c;多径衰落、多普勒频移等小范围衰落是不可避免的问题&#xff0c;解决这些衰落和干扰成为倍受关注的问题。为了解决衰落&#x…

    ROS学习第二十三节——TF坐标变换实操

    1.综述 需求描述: 程序启动之初: 产生两只乌龟&#xff0c;中间的乌龟(A) 和 左下乌龟(B), B 会自动运行至A的位置&#xff0c;并且键盘控制时&#xff0c;只是控制 A 的运动&#xff0c;但是 B 可以跟随 A 运行 结果演示: 实现分析: 乌龟跟随实现的核心&#xff0c;是乌龟…

    在外Windows远程连接MongoDB数据库【无公网IP】

    文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章&#xff1a;公网远…

    【Pytorch学习笔记】12.修改预训练模型权重参数的方法(用于对单通道灰度图使用预训练模型)

    文章目录 1.导出模型参数&#xff0c;修改参数2.修改模型结构&#xff0c;导回参数 我们在训练单通道图像&#xff0c;即灰度图&#xff08;如医学影像数据&#xff09;时&#xff0c;常会使用预训练模型进行训练。 但是一般的预训练模型是以ImageNet数据集预训练的&#xff0c…

    OpenAI Embedding:快速实现聊天机器人(四)

    theme: orange 本文正在参加「金石计划」 接上文OpenAI Embedding&#xff1a;快速实现聊天机器人(三)如何使用Python实现embedding相似度搜索&#xff0c;这篇文章继续讲如何将搜索到的相似文本进行提炼&#xff0c;并最终得出问题的答案。 提炼文本 通过调用azure openai服务…

    数据库基础篇 《10.创建和管理表》

    1. 基础知识 1.1 一条数据存储的过程 1.2 标识符命名规则 1.3 MySQL中的数据类型 其中&#xff0c;常用的几类类型介绍如下&#xff1a; 2. 创建和管理数据库 2.1 创建数据库 方式1&#xff1a;创建数据库 CREATE DATABASE 数据库名; 方式2&#xff1a;创建数据库并指…

    Netty工作模型——网络IO模型的演进,从BIO到NIO到Reactor模型与Netty工作模型

    文章目录 一、IO模型1、BIO&#xff08;同步阻塞&#xff09;2、NIO&#xff08;同步非阻塞&#xff09;3、AIO&#xff08;异步非阻塞&#xff09; 二、Reactor模型1、单Reactor单线程2、单Reactor多线程3、主从Reactor多线程 三、Netty工作模型1、Netty工作模型2、Netty入门案…

    【Java】『蓝桥杯』10道编程题及答案(三)

    系列文章 【Java】『蓝桥杯』10道编程题及答案&#xff08;一&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/130223115 【Java】『蓝桥杯』10道编程题及答案&#xff08;二&#xff09; 本文链接&#xff1a;https://blog.csdn.net/y…

    智能座舱域

    bosch对车载系统的划分&#xff0c;通常分为5大域&#xff1a;动力域&#xff0c;底盘域&#xff0c;车身域&#xff0c;智能座舱域和adas自动驾驶域。随着ECU集成中央化的发展趋势&#xff0c;大众&#xff0c;华为等巨头将动力域&#xff0c;底盘域和车身域合并为整车控制域&…

    Java中将json字符串导出为json文件【详细步骤】

    一、概述 请根据具体需求具体改动&#xff0c;此代码需要将前端的数据查询出来&#xff0c;然后进行json字符串的转化 .getCatalogId(id)方法是根据id查出来的内容然后再进行转换成json字符串 也可以直接传入json字符串进行测试 二、代码 ApiOperation("导出为json文件&q…

    fzyczn生日赛t1 CZN

    fzy&czn生日赛t1 CZN 膜拜hybb首杀 文章目录 fzy&czn生日赛t1 CZN题目背景题目描述分析my codewnags code 题目 题目背景 有一天&#xff0c;czn在机房里面心心念念的pj终于来找他了&#xff0c;pj希望czn能够帮助她来解决一道数学题&#xff0c;czn“十分不乐意”地…

    数据库基础篇 《8. 聚合函数》

    1. 聚合函数介绍 聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用 1.1 AVG和SUM函数 可以对 数值型数据 使用 AVG 和 SUM 函数。 SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary) FROM employees WHERE job_id LIKE %REP%; 1.2 MIN…

    【Latex排版】使用Latex 排版过程中的那些一二三问题汇总

    排版错误问题总结&#xff1a; 1.在【\maketitle】 位置处报错----Missing $ inserted. 2.添加参考文献&#xff0c;编译后显示错误&#xff0c;并且pdf中引用文献处为问号(?) 持续更新问题。。。。。。 近期用Latex整理期刊论文时遇到了不少问题&#xff0c;现把遇到的问题及…

    2023 最新最细 vite+vue3+ts 多页面项目架构,建议收藏备用!

    &#x1f33b; 前言 本文教程 github地址 。 如果对你有帮助&#xff0c;希望能点个star ⭐️⭐️⭐️ 万分感谢&#x1f60a;&#x1f60a;&#x1f60a; &#x1f9f1; 背景 不久前我司需要重新部署一个前端项目&#xff0c;由我来负责这个项目的搭建。因为这个项目是需要…

    python爬虫简介

    关于爬虫使用 使用python编写的爬虫脚本&#xff08;程序&#xff09;可以完成定时定量&#xff0c;指定目标&#xff08;Web站点&#xff09;的数据爬取&#xff0c;主要使用多&#xff08;单&#xff09;线程/进程&#xff0c;网络请求库&#xff0c;数据解析&#xff0c;数…

    记一次误用顶层await导致的路由渲染错误

    背景&#xff1a;顶层 await Async 异步函数能将 Promise 的链式调用的形式&#xff0c;改为同步的形式&#xff0c;对于编写和阅读代码都非常友好。但一直以来都有一个限制&#xff0c;就是 async 和 await 这两个关键字必须成对出现。这就导致了一个问题&#xff0c;想使用 …

    【JavaScript速成之路】一文带你掌握DOM基础

    &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f525;系列专栏&#xff1a;【JavaScript速成之路】 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 文章目录 前言1&#xff0c;Web API简介1.1&#xff0c;初识Web API1.2&#xff0c;Web A…