代码之家  ›  专栏  ›  技术社区  ›  roman

如何自动将图像的绝对路径添加到markdown

  •  0
  • roman  · 技术社区  · 1 年前

    我正在尝试将markdown转换为结构化文本。markdown有一张带有相对路径的图片,如何自动添加绝对路径而不是相对路径?

    这是我的代码

    import m2r
    
    def convert(md_file):
        with open(md_file, mode='r') as r_file:
            text = r_file.read()
        return m2r.convert(text=text)
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Iman Mohammadi    1 年前

    要在将Markdown内容转换为reStructuredText之前,自动将其中的相对图像路径替换为绝对路径,可以使用正则表达式搜索图像语法,并将相对路径替换为完全路径。下面是一个如何修改代码以实现此目的的示例:

    import re
    import m2r
    
    def convert(md_file, absolute_path_prefix):
        with open(md_file, mode='r') as r_file:
            text = r_file.read()
    
        img_pattern = re.compile(r'!\[(.*?)\]\((.*?)\)')
    
        def replacer(match):
            alt_text = match.group(1)
            rel_path = match.group(2)
            if rel_path.startswith('http://') or rel_path.startswith('https://') or rel_path.startswith('/'):
                return match.group(0)
            abs_path = absolute_path_prefix + rel_path
            return f'![{alt_text}]({abs_path})'
    
        text_with_abs_paths = img_pattern.sub(replacer, text)
    
        return m2r.convert(text=text_with_abs_paths)
    
    md_file = 'example.md'
    absolute_path_prefix = 'http://www.example.com/images/'  # Example absolute path
    rst_content = convert(md_file, absolute_path_prefix)
    print(rst_content)
    

    此代码打开一个markdown文件,搜索markdown图像标记,并使用 replacer 函数将任何相对路径替换为指定的绝对路径,只要它们不是绝对URL或web链接即可。更新路径后,它会使用 m2r 图书馆

    代替 http://www.example.com/images/ 与您的图像所需的实际绝对路径。这是一个简单的示例,可能需要进行调整以适应路径的特定格式或您可能具有的其他要求。希望对你有帮助。