珠海网站制作软件网站推广排名收费
需求
大模型输出的答案中,通常公式格式为latex格式,无法直接在markdown中显示。因此需要:
将LaTeX的块级公式标识符\[...\]替换为Markdown的`$$...$$`,
行内公式标识符`\(...\)`替换为Markdown的`$...$`。
以下代码可以实现上述功能。
思路
- 读取markdown文件
- 使用正则表达式匹配公式内容—使用re库
- 进行替换—使用re.sub函数
- 输出新的markdown内容
代码内容
import re
from pathlib import Pathdef convert_latex_to_markdown(text):# 替换块级公式 $$...$$ 为 $$...$$text = re.sub(r"\\\[(.*?)\\\]", r'$$\1$$', text, flags=re.DOTALL)# 替换行内公式 $...$ 为 $...$text = re.sub(r"\\\((.*?)\\\)", r'$\1$', text, flags=re.DOTALL)return textdef process_markdown_file(input_path, output_path=None):# 读取原始文件with open(input_path, 'r', encoding='utf-8') as f:original_content = f.read()# 转换内容converted_content = convert_latex_to_markdown(original_content)# 生成输出路径if not output_path:input_file = Path(input_path)output_path = input_file.parent / f"{input_file.stem}_converted{input_file.suffix}"# 写入新文件with open(output_path, 'w', encoding='utf-8') as f:f.write(converted_content)return output_pathif __name__ == "__main__":input_path = 'new.md'output_path = 'output.md'output_path = process_markdown_file(input_path, output_path)print(f"Conversion complete! New file saved at: {output_path}")
说明
在 Python 的re
模块中,re.DOTALL
是一个标志(flag),用于修改正则表达式的行为。它的作用是让点号(.
)匹配任何字符,包括换行符(\n
)。
默认情况下:
- 在正则表达式中,点号(
.
)通常匹配任何字符,但不包括换行符。例如,.*
会匹配任意字符(除换行符外),直到遇到换行符为止。
使用re.DOTALL
:
- 当使用
re.DOTALL
标志时,点号(.
)会匹配任何字符,包括换行符。这意味着正则表达式可以跨多行匹配内容。