python 实现 md文档自动编号
1. 原理
正则匹配对相应字符串进行替换
2. 运行方法
python md_convert.py [a.md, b.md,...] # 转换给定文档
或
python md_convert.py # 转换目录下所有的md文档
3. 效果
4. 代码
#coding:utf-8"""
----------------------------------------
description:
md文档格式化处理类
为md文档自动生成标题编号;
如已有编号,更新之;
支持 1-6 级标题;
标题格式:##,###,####,#####,######如给定参数则转换给定文件;
如未给定参数则转换目录下所有md文档。author: sss
date:
----------------------------------------
change:----------------------------------------
"""
__author__ = 'sss'import os
import sys
import re# 工具对象
def pr_type(i, info=''):
print(info, i, type(i))class MdDocProcessing(object):
"""
md文档格式化处理类
为md文档自动生成标题编号;
如已有编号,自动更新;
更新1-6 级标题;
标题格式支持:##,###,####,#####,######如给定参数则转换给定文件;
如未给定参数则转换目录下所有md文档。"""
def __init__(self):
passdef start_processing(self, *ar):
#self._command_check()doc_list = sys.argv[1:]
if len(doc_list) == 0:
doc_list = [x for x in os.listdir() if x.endswith('.md')]
res = input("将转换以下文档:\n%s\nY(回车)/N?:" % doc_list)
if res in 'yY':
pass
else:
return
#print(doc_list)for _ in doc_list:
if not _.endswith(r'.md'):
print('参数格式错误: %s '%(_), '\n请输入.md格式文件。')
returnfor _ in doc_list:
self.title_style_convert(_)
print("文档转换完成。"%(_, ))def title_style_convert(self, file_name):
"""
标题自动编号
编号格式为: 1.1.1. 标题
:param file_name:
:return:
"""title_num_cur = [0]*6
# 匹配正则表达式
reg = r'^((#{2,6})[\s\d\.]{0,})(.*)$'
pattern = re.compile(reg)# 输出文件对象
res_file = open('_' + file_name, 'w', encoding='utf-8')with open(file_name, 'r', encoding='utf-8') as fi:
line = fi.readline()
while line:
res = re.match(pattern, line)
if res:
length = len(res.group(2))
title_num_cur, title_str = self._title_nuber_process(title_num_cur, length)
line = res.group(2) + ' ' + title_str + res.group(3) + '\n'res_file.write(line)
line = fi.readline()
# 关闭输出文件
res_file.close()#os.rename(file_name, file_name + '.tmp')
# 删除原文件
os.remove(file_name)
# 将输出文件改为原文件名
os.rename('_' + file_name, file_name)
returndef _command_check(self):
#print(sys.argv)
cmd_params = sys.argv[1:]
if len(cmd_params)python 实现 md文档自动编号的更多相关文章
- 使用Python从Markdown文档中自动生成标题导航
概述 知识与思路 代码实现 概述 Markdown 很适合于技术写作,因为技术写作并不需要花哨的排版和内容, 只要内容生动而严谨,文笔朴实而优美. 为了编写对读者更友好的文章,有必要生成文章的标题导航 ...
- Python之文件处理-批量修改md文档内容
目录 Python之文件处理-批量修改md文档内容 Python之文件处理-批量修改md文档内容 #!/usr/bin/env python # -*- coding:utf-8 -*- import ...
- SDWebImage ReadMe.md文档简单说明
SDWebImage ReadMe.md 文档 附:SDWebImage框架github下载地址:https://github.com/rs/SDWebImage 注1:该文章简单翻译了SDWebIm ...
- Word 2010文档自动生成目录和某页插入页码
一.Word 2010文档自动生成目录 关于Word文档自动生成目录一直是我身边同学们最为难的地方,尤其是毕业论文,经常因为目录问题,被要求修改,而且每次修改完正文后,目录的内容和页码可能都会发生变化 ...
- md文档的书写《二》
对<md文档的书写一>的补充和部分归总 我使用的是Typora,快捷键可能有些片面,没有特殊说明,下文所有快捷键都是Typora编辑器下支持的快捷键,望知晓. 关于标题的书写补充 除了 ( ...
- 【技术博客】利用Python将markdown文档转为html文档
利用Python将markdown文档转为html文档 v1.0 作者:FZK 元素简单的md文件 Python中自带有一个markdown库,你可以直接这样使用 md_file = open(&qu ...
- python实用小技能分享,教你如何使用 Python 将 pdf 文档进行 加密 解密
上次说了怎么将word转换为pdf格式 及 实现批量将word转换为pdf格式(点击这里),这次我又get到一个新技能–使用 Python 将 pdf 文档进行 加密 解密,哈哈哈 希望帮到更多人! ...
- md文档使用小技巧
简介 在日常写readme文档中,可能会遇到一些小问题,此处记录一下md文档编写过程中的一些小技巧. 插入图片 在md文档中插入图片,目前有三种方式,本地导入.网络导入.base64导入. 本地导入 ...
- Openstack python api 学习文档 api创建虚拟机
Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...
随机推荐
- “公文流转系统 v1.0”
1.项目需求: 河北金力集团是我省机械加工的龙头企业,主要从事矿山机械制造及各种机械零部件加工.企业有3个厂区,主厂区位于省高新技术开发区,3个分厂分别在保定.邢台和唐山.为增加企业的核心竞争力和加强 ...
- prach 839滤波系数
- MyBatis的手动映射与模糊查询
一.手动映射 当实体类属性与数据库字段名不同时,无法自动映射,导致查询出空值,这时候可以使用手动映射 在select节点添加resultMap属性与resultMap节点建立关系
- 题解 CF409A 【The Great Game】
题目传送门. 思路: 首先我们定义\(2\)个字符串,分别存放 TEAM 1 与 TEAM 2 的出招顺序.接着再定义\(2\)个变量,存放 TEAM 1 与 TEAM 2 的分数. string s ...
- 'ssh-keygen' 不是内部或外部命令,也不是可运行的程序
右键我的电脑,点击环境变量,设置系统配置里面的Path 新增一个 D:\ruanjiananzhuangdizhi\Git\usr\bin 路径就可以了
- python基础数据类型整理
一.数据类型 (一).小技巧 1.PyCharm:选中多行,按"Ctrl+/"可批量注释掉 (二).字符串 1.startswith(str,[,start][,end]) #判断 ...
- 一、c++语言基础
1. 程序员的第一条代码"Hello,world!" #include <cstdio> //头文件,主要负责输入.输出 using namespace std;//C ...
- 导入org.apache.poi.xssf 读取excel
POI 操作 excel 用XSSF 方式时,如果不能自动导入 org.apache.poi.xssf 对应jar 包,则可以Apache 官网进行下载,自行导入. step1: 访问 http:/ ...
- Java的三种循环:1、for循环 2、while循环 3、do...while循环
Java的三种循环 Java三种循环结构: 1.for循环 2.while循环 3.do...while循环 循环结构组成部分:1.条件初始化语句,2.条件判断语句 , 3.循环体语句,4.条件控制语 ...
- 后台异常 - sql语句查询出的结果与dao层返回的结果不一致
问题描述 sql语句查询出的结果与dao层返回的结果不一致 问题原因 (1)select 中,查询的列名称重复,数据出现错乱 (2)使用不等号,不等号(!=,<>),查询出来的结果集不包含 ...