Python+;正则表达式-富文本格式化程序

Python+;正则表达式-富文本格式化程序,python,regex,text-formatting,Python,Regex,Text Formatting,我正在构建一个富文本格式化程序,它有五个功能 多行格式设置 粗体文本 斜体文本 >引述 单行 我已经能够成功地将内容传递到formatter函数,该函数包含打包到一条消息中的所有示例。我面临的问题是如何编写一个仍然是干的函数,并允许应用上面显示的任意数量的格式化选项。如果这个解决方案看起来很明显,我深表歉意。我对编程非常陌生,我似乎无法想出一个没有大量重复的解决方案 import re class Publisher(): def rich_text_formatter(self, con

我正在构建一个富文本格式化程序,它有五个功能

  • 多行格式设置
  • 粗体文本
  • 斜体文本
  • >引述
  • 单行
  • 我已经能够成功地将内容传递到formatter函数,该函数包含打包到一条消息中的所有示例。我面临的问题是如何编写一个仍然是干的函数,并允许应用上面显示的任意数量的格式化选项。如果这个解决方案看起来很明显,我深表歉意。我对编程非常陌生,我似乎无法想出一个没有大量重复的解决方案

    import re
    
    class Publisher():
    
    
    def rich_text_formatter(self, content):
    
        # Quote_format
        #find the desired string inside of the post content
        string = re.findall(r">([^;]*)\r\n", content)
        #if the desired string existed.
        if string:
            #concatenate html tags around the extracted string while turning list into a string for concatention.
            formatted_text = "<div class='quote-container'><div class='quote_bar'></div><span class='quote_format'>" + ', '.join(string) + " </span></div> "
            # insert formatted text back inside the post content replacing the unformatted string.
            final = re.sub(r">([^;]*)\r\n", formatted_text, content) 
    
        # Multi_line_format
            string = re.findall(r"\s```([^;]*)```\s", final)
            if string:
                formatted_text = " <br><pre class='multi_line_code_format'> " + ', '.join(string) + " </pre> "
                final = re.sub(r"\s```([^;]*)```\s", formatted_text, final) 
    
            # Bold_text_format
                string = re.findall(r"\s\*([^;]*)\*\s", final)
                if string:
                    formatted_text = " <span class='bold_text_format'> " + ', '.join(string) + " </span> "
                    final = re.sub(r"\s\*([^;]*)\*\s", formatted_text, final) 
    
                # Italic_text_format
                    string = re.findall(r"\s_([^;]*)_\s", final)
                    if string:
                        formatted_text = " <span class='italic_text_format'> " + ', '.join(string) + " </span> "
                        final = re.sub(r"\s_([^;]*)_\s", formatted_text, final) 
    
                    # Single_line_format
                        string = re.findall(r"\s`([^;]*)`\s", final)
                        if string:
                            formatted_text = " <span class='single_line_format'> " + ', '.join(string) + " </span> "
                            final = re.sub(r"\s`([^;]*)`\s", formatted_text, final) 
                            return final
    
    publisher = Publisher()
    content = 'hey this is preformatted text ```multiline``` >this is a     quote\r\n' + '  `single line code` *bolded text* _italic_ '
    print publisher.rich_text_formatter(content)
    
    重新导入
    类发布者():
    def富文本格式化程序(自身、内容):
    #报价单格式
    #在帖子内容中找到所需的字符串
    string=re.findall(r“>([^;]*)\r\n”,内容)
    #如果所需字符串存在。
    如果字符串:
    #将html标记连接到提取的字符串周围,同时将列表转换为字符串以进行连接。
    格式化的_text=“+”,“。连接(字符串)+”
    #将格式化文本插回帖子内容,替换未格式化字符串。
    final=re.sub(r“>([^;]*)\r\n”,格式化的\u文本,内容)
    #多行格式
    string=re.findall(r“\s```([^;]*)``\s”,final)
    如果字符串:
    格式化的_text=“
    ”+,”。连接(字符串)+“ final=re.sub(r“\s```”([^;]*)``\s),格式化的\u文本,final) #粗体文本格式 string=re.findall(r“\s\*([^;]*)\*\s”,最终) 如果字符串: 格式化的_text=“+”,“。连接(字符串)+” final=re.sub(r“\s\*([^;]*)\*\s”,格式化文本,final) #斜体文本格式 string=re.findall(r“\s”([^;]*)\u\s”,最终) 如果字符串: 格式化的_text=“+”,“。连接(字符串)+” final=re.sub(r“\s”([^;]*)\s”,格式化的\u文本,final) #单行格式 string=re.findall(r“\s`([^;]*)`\s”,最终) 如果字符串: 格式化的_text=“+”,“。连接(字符串)+” final=re.sub(r“\s`([^;]*)`\s”,格式化文本,final) 返回决赛 publisher=publisher() content='嘿,这是预格式化文本``多行```>这是一个引号\r\n'+'`单行代码`*粗体文本*\u斜体`' 打印publisher.rich\u text\u格式化程序(内容)
    Python有多个标记解析器和格式化程序库。我强烈建议您使用其中的一个,而不是滚动您自己的个人小标准。@Tomalak谢谢您的建议,我将对此进行研究。