处于高兼容性和低排版成本,之前一直用的是 markdown 作为主力笔记格式,最近了解了一下非线性笔记的哲学,于是开始尝试以 Obisidian 作为个人笔记的主题,而 SenyaoWiki 作为公开的 wiki 式的非线性笔记的展示。
由于 mediawiki 的格式与 markdown 略有区别,在将自己的笔记展示到 wiki 的过程中必然就会存在格式转换的问题。市面上常见的 Markdown 转换器存在或多或少的问题,于是花了 10 分钟简单写了个小脚本用于格式转换。
import argparse
import os
def markdown_to_mediawiki(input_file, output_file):
with open(input_file, 'r', encoding='utf-8') as infile, open(output_file, 'w', encoding='utf-8') as outfile:
for line in infile:
# 转换加粗
line = line.replace('**', "'''")
# 转换标题
if line.startswith('#'):
level = line.count('#')
stripped_line = line.lstrip('#').strip()
mediawiki_heading = '=' * (level + 1) + stripped_line + '=' * (level + 1) + '\n'
outfile.write(mediawiki_heading)
# 转换无序列表
elif line.strip().startswith('-'):
mediawiki_list_item = line.replace('-', '*', 1)
outfile.write(mediawiki_list_item)
else:
outfile.write(line)
def main():
parser = argparse.ArgumentParser(description="Convert Markdown to MediaWiki format.")
parser.add_argument('-i', '--input', required=True, help="Input Markdown file name.")
parser.add_argument('-o', '--output', help="Output MediaWiki file name. Optional.")
args = parser.parse_args()
input_file = args.input
output_file = args.output if args.output else os.path.splitext(input_file)[0] + '.txt'
markdown_to_mediawiki(input_file, output_file)
print(f"Converted {input_file} to {output_file} successfully.")
if __name__ == "__main__":
main()
使用时,只需要指定输入文件和输出文件(可选)即可
python main.py -i example.md
参见 GitHub
发表回复