【问题标题】:Reformat certain paragraphs to Markdown将某些段落重新格式化为 Markdown
【发布时间】:2021-11-21 13:58:42
【问题描述】:

我是 python 初学者。

我有这段代码可以获取符号“*****”之后的所有段落

import re

file = open('/Users/text.txt', mode='r')

result = [s.strip() for s in re.findall(r'^\*{4,}((?:\r?\n(?!\s*$|\*{4}).+)*)', file.read(), re.MULTILINE)]

print(*result, sep="\n\n")

file.close()

当前输入:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

****
Sed id placerat magna.

*******
*******
*******
Pellentesque in ex ac urna tincidunt tristique. 

Etiam dapibus faucibus gravida.

当前输出:

Sed id placerat magna.

Pellentesque in ex ac urna tincidunt tristique. 

需要输出:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

==Sed id placerat magna.==

==Pellentesque in ex ac urna tincidunt tristique.==

Etiam dapibus faucibus gravida.

基本上试图将亮点重新格式化为 Markdown .md 格式。 到目前为止,但似乎无法弄清楚如何做到这一点。

【问题讨论】:

    标签: python formatting markdown paragraph


    【解决方案1】:

    大概是这样的:

    import re
    
    text = '''Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    
    ****
    Sed id placerat magna.
    
    *******
    Pellentesque in ex ac urna tincidunt tristique.
    
    Etiam dapibus faucibus gravida.'''
    
    print(re.sub(r'\n\*{4,}\n(.+)\n', r'\n==\1==\n', text))
    

    不过,文本的开头和结尾可能存在问题。可能在开始和结束之前添加\n 来处理文本并在之后删除它们是有意义的。只是为了安全起见。

    更新

    这是满足新要求的更新版本:

    import re
    
    # open txt file
    with open('d:/Users/text.txt', 'r') as f:
        text = f.read()
    
    text = re.sub('\*\n+\*', '**', text)  # remove all '\n' between all '*'
    text = re.sub(r'\n\*{4,}\n(.+)\n', r'\n==\1==\n', text)
    
    # save txt file
    with open('d:/Users/output.txt', 'w') as f:
        f.write(text)
    

    输入:

    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    
    ****
    Sed id placerat magna.
    
    *******
    *******
    *******
    Pellentesque in ex ac urna tincidunt tristique.
    
    Etiam dapibus faucibus gravida.
    

    输出:

    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    
    ==Sed id placerat magna.==
    
    ==Pellentesque in ex ac urna tincidunt tristique.==
    
    Etiam dapibus faucibus gravida.
    

    但实际上解析和重新格式化格式不佳的文本始终是一个怪癖,基本上是无止境的任务。我相信还会有其他问题。您将永远只有部分临时解决方案。

    【讨论】:

    • 还有两个问题我还需要弄清楚:1. 输入在 .txt 文件夹中,因为它有很多文本。我想这应该可行吗?:file = open('/Users/text.txt', mode='r') 2. 我的输入格式很尴尬:有些段落在上面有多个 *** asterix 段落 - 请参阅编辑后的问题示例。
    • 知道了!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多