Este artículo explica cómo convertir archivos Markdown en archivos de texto sin formato. Markdown es un lenguaje de marcado ligero para escribir documentos con formato simple. Sin embargo, a veces necesitamos convertir archivos Markdown en archivos de texto sin formato para otro procesamiento o visualización directamente en el navegador. A continuación se muestra una forma sencilla de implementar esta función.
Convertir a HTML
Para convertir archivos Markdown a archivos html, puede utilizar markdown
la biblioteca de Python. Primero asegúrese de que la biblioteca esté instalada markdown
, si no, puede instalarla usando el siguiente comando:
pip install markdown
Luego, el archivo Markdown se puede convertir en un archivo de texto sin formato usando el siguiente código:
import markdown
def md_to_txt(md_file, txt_file):
with open(md_file, 'r', encoding='utf-8') as f:
md_content = f.read()
txt_content = markdown.markdown(md_content)
with open(txt_file, 'w', encoding='utf-8') as f:
f.write(txt_content)
md_file = 'example.md' # Markdown文件路径
txt_file = 'example.html' # 转换后的纯文本文件路径
md_to_txt(md_file, txt_file)
Reemplace example.md
con la ruta al archivo Markdown que desea convertir y example.txt
reemplace con la ruta al archivo html que desea guardar.
Convertir a texto
Si desea eliminar el enlace y guardar solo el texto sin formato, definimos una función que md_to_txt()
acepta dos parámetros: md_file
la ruta del archivo Markdown y txt_file
la ruta del archivo de texto sin formato convertido. La función primero open()
lee el contenido del archivo Markdown usando la función y lo divide línea por línea en una lista de cadenas str_list
. Luego recorre cada línea de la lista, ignorando las líneas que contienen palabras clave específicas (como ![
o https
) y eliminando texto específico (como 如下图所示:
). Agregue el texto procesado a txt_content
la variable, actualice la información del título y la categoría según sea necesario, escriba txt_content
en un archivo de texto sin formato en la ruta especificada e imprima el mensaje de finalización de la conversión.
import os
import re
import markdown2 as mdk
def traverse_dir_files(root_dir, ext=None, is_sorted=True):
"""
列出文件夹中的文件, 深度遍历
:param root_dir: 根目录
:param ext: 后缀名
:param is_sorted: 是否排序,耗时较长
:return: [文件路径列表, 文件名称列表]
"""
names_list = []
paths_list = []
for parent, _, fileNames in os.walk(root_dir):
for name in fileNames:
if name.startswith('.'): # 去除隐藏文件
continue
if ext: # 根据后缀名搜索
if name.endswith(tuple(ext)):
names_list.append(name)
paths_list.append(os.path.join(parent, name))
else:
names_list.append(name)
paths_list.append(os.path.join(parent, name))
if not names_list: # 文件夹为空
return paths_list, names_list
# if is_sorted:
# paths_list, names_list = sort_two_list(paths_list, names_list)
print(paths_list)
return paths_list
def remove_code_blocks(text):
return re.sub(r'```(.*?)```', '', text, flags=re.DOTALL)
def md_to_txt(md_file, txt_file):
txt_content = ''
title = os.path.basename(md_file).replace('.md','').strip()
with open(md_file, 'r', encoding='utf-8') as f:
str_list = f.read().splitlines()
for md in str_list:
if '![' in md or 'https' in md:
continue
md = md.replace('如下图所示:', '')
txt_content += md +'
'
if 'title:' in md:
title = md.replace('title:','').strip()
if 'category:' in md:
category = md.replace('category:','').strip()
title = category + '_' + title
os.makedirs(os.path.dirname(txt_file), exist_ok=True) # 如果目录不存在则创建目录
with open(os.path.join(txt_file,title+'.txt'), 'w', encoding='utf-8') as f:
f.write(txt_content)
print("转换完成:%s" % (md_file))
Recorrer el directorio especificado
Se define una función readlist()
, que se utiliza para recorrer todos los archivos Markdown en el directorio especificado y llamar md_to_txt()
a la función para la conversión. Acepta dos parámetros: path
la ruta del directorio a recorrer txt_dir
y la ruta del directorio donde se almacenan los archivos de texto sin formato convertidos. La función utiliza dir_util.traverse_dir_files()
el método para obtener todas las rutas de archivos con la extensión en el directorio .md
y las almacena en path_list
la lista. Luego recorre en iteración cada ruta de archivo de la lista e intenta llamar md_to_txt()
a la función para convertirlo. Si se produce una excepción durante la conversión, imprimirá un mensaje de error.
def readlist(path, txt_dir):
path_list = dir_util.traverse_dir_files(root_dir=path, ext='.md')
res = []
for path_str in path_list:
try:
md_to_txt(path_str, txt_dir)
except Exception as e:
print(path_str + '---------error-----------')
print(e)
Finalmente, podemos llamar a estas dos funciones en el script de Python para convertir Markdown a texto sin formato. Por ejemplo, supongamos que tenemos un archivo Markdown data/tree.md
y queremos convertirlo a un archivo de texto plano y guardarlo en data/txt
el directorio. Podemos escribir el código así:
if __name__ == '__main__':
md_file = r'data\' # Markdown文件路径
txt_dir = r'data\txt' # 转换后的纯文本文件存放的目录路径
readlist(md_file, txt_dir)
Después de ejecutar este código, data/txt
se generará en el directorio un archivo de texto sin formato tree.md
con . El contenido del texto es el mismo que el del archivo Markdown original.