zoukankan      html  css  js  c++  java
  • python之markdown转html

    python之markdown转html

    • 为了方便,定义一个markdown转html的函数,直接调用即可
    import markdown
    
    def md2html(mdstr):
        exts = ['markdown.extensions.extra', 'markdown.extensions.codehilite','markdown.extensions.tables','markdown.extensions.toc']
        html = '''
        <html lang="zh-cn">
        <head>
        <meta content="text/html; charset=utf-8" http-equiv="content-type" />
        <link href="/static/default.css" rel="stylesheet">
        <link href="/static/github.css" rel="stylesheet">
        </head>
        <body>
        %s
        </body>
        </html>
        '''
        ret = markdown(mdstr,extensions=exts)
        return html % ret
    

    • 注意:
    1. pip install markdown
    2. 创建default.css和github.css

    default.css

    .hll { background-color: #ffffcc }
    .c { color: #408080; font-style: italic } /* Comment */
    .err { border: 1px solid #FF0000 } /* Error */
    .k { color: #008000; font-weight: bold } /* Keyword */
    .o { color: #666666 } /* Operator */
    .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
    .cm { color: #408080; font-style: italic } /* Comment.Multiline */
    .cp { color: #BC7A00 } /* Comment.Preproc */
    .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
    .c1 { color: #408080; font-style: italic } /* Comment.Single */
    .cs { color: #408080; font-style: italic } /* Comment.Special */
    .gd { color: #A00000 } /* Generic.Deleted */
    .ge { font-style: italic } /* Generic.Emph */
    .gr { color: #FF0000 } /* Generic.Error */
    .gh { color: #000080; font-weight: bold } /* Generic.Heading */
    .gi { color: #00A000 } /* Generic.Inserted */
    .go { color: #888888 } /* Generic.Output */
    .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
    .gs { font-weight: bold } /* Generic.Strong */
    .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
    .gt { color: #0044DD } /* Generic.Traceback */
    .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
    .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
    .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
    .kp { color: #008000 } /* Keyword.Pseudo */
    .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
    .kt { color: #B00040 } /* Keyword.Type */
    .m { color: #666666 } /* Literal.Number */
    .s { color: #BA2121 } /* Literal.String */
    .na { color: #7D9029 } /* Name.Attribute */
    .nb { color: #008000 } /* Name.Builtin */
    .nc { color: #0000FF; font-weight: bold } /* Name.Class */
    .no { color: #880000 } /* Name.Constant */
    .nd { color: #AA22FF } /* Name.Decorator */
    .ni { color: #999999; font-weight: bold } /* Name.Entity */
    .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
    .nf { color: #0000FF } /* Name.Function */
    .nl { color: #A0A000 } /* Name.Label */
    .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
    .nt { color: #008000; font-weight: bold } /* Name.Tag */
    .nv { color: #19177C } /* Name.Variable */
    .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
    .w { color: #bbbbbb } /* Text.Whitespace */
    .mb { color: #666666 } /* Literal.Number.Bin */
    .mf { color: #666666 } /* Literal.Number.Float */
    .mh { color: #666666 } /* Literal.Number.Hex */
    .mi { color: #666666 } /* Literal.Number.Integer */
    .mo { color: #666666 } /* Literal.Number.Oct */
    .sa { color: #BA2121 } /* Literal.String.Affix */
    .sb { color: #BA2121 } /* Literal.String.Backtick */
    .sc { color: #BA2121 } /* Literal.String.Char */
    .dl { color: #BA2121 } /* Literal.String.Delimiter */
    .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
    .s2 { color: #BA2121 } /* Literal.String.Double */
    .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
    .sh { color: #BA2121 } /* Literal.String.Heredoc */
    .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
    .sx { color: #008000 } /* Literal.String.Other */
    .sr { color: #BB6688 } /* Literal.String.Regex */
    .s1 { color: #BA2121 } /* Literal.String.Single */
    .ss { color: #19177C } /* Literal.String.Symbol */
    .bp { color: #008000 } /* Name.Builtin.Pseudo */
    .fm { color: #0000FF } /* Name.Function.Magic */
    .vc { color: #19177C } /* Name.Variable.Class */
    .vg { color: #19177C } /* Name.Variable.Global */
    .vi { color: #19177C } /* Name.Variable.Instance */
    .vm { color: #19177C } /* Name.Variable.Magic */
    .il { color: #666666 } /* Literal.Number.Integer.Long */
    

    github.css

    body {
      font-family: Helvetica, arial, sans-serif;
      font-size: 14px;
      line-height: 1.6;
      padding-top: 10px;
      padding-bottom: 10px;
      background-color: white;
      padding: 30px; }
    
    body > *:first-child {
      margin-top: 0 !important; }
    body > *:last-child {
      margin-bottom: 0 !important; }
    
    a {
      color: #4183C4; }
    a.absent {
      color: #cc0000; }
    a.anchor {
      display: block;
      padding-left: 30px;
      margin-left: -30px;
      cursor: pointer;
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0; }
    
    h1, h2, h3, h4, h5, h6 {
      margin: 20px 0 10px;
      padding: 0;
      font-weight: bold;
      -webkit-font-smoothing: antialiased;
      cursor: text;
      position: relative; }
    
    h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {
      background: url("../../images/modules/styleguide/para.png") no-repeat 10px center;
      text-decoration: none; }
    
    h1 tt, h1 code {
      font-size: inherit; }
    
    h2 tt, h2 code {
      font-size: inherit; }
    
    h3 tt, h3 code {
      font-size: inherit; }
    
    h4 tt, h4 code {
      font-size: inherit; }
    
    h5 tt, h5 code {
      font-size: inherit; }
    
    h6 tt, h6 code {
      font-size: inherit; }
    
    h1 {
      font-size: 28px;
      color: black; }
    
    h2 {
      font-size: 24px;
      border-bottom: 1px solid #cccccc;
      color: black; }
    
    h3 {
      font-size: 18px; }
    
    h4 {
      font-size: 16px; }
    
    h5 {
      font-size: 14px; }
    
    h6 {
      color: #777777;
      font-size: 14px; }
    
    p, blockquote, ul, ol, dl, li, table, pre {
      margin: 15px 0; }
    
    hr {
      background: transparent url("../../images/modules/pulls/dirty-shade.png") repeat-x 0 0;
      border: 0 none;
      color: #cccccc;
      height: 4px;
      padding: 0; }
    
    body > h2:first-child {
      margin-top: 0;
      padding-top: 0; }
    body > h1:first-child {
      margin-top: 0;
      padding-top: 0; }
      body > h1:first-child + h2 {
        margin-top: 0;
        padding-top: 0; }
    body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child {
      margin-top: 0;
      padding-top: 0; }
    
    a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
      margin-top: 0;
      padding-top: 0; }
    
    h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
      margin-top: 0; }
    
    li p.first {
      display: inline-block; }
    
    ul, ol {
      padding-left: 30px; }
    
    ul :first-child, ol :first-child {
      margin-top: 0; }
    
    ul :last-child, ol :last-child {
      margin-bottom: 0; }
    
    dl {
      padding: 0; }
      dl dt {
        font-size: 14px;
        font-weight: bold;
        font-style: italic;
        padding: 0;
        margin: 15px 0 5px; }
        dl dt:first-child {
          padding: 0; }
        dl dt > :first-child {
          margin-top: 0; }
        dl dt > :last-child {
          margin-bottom: 0; }
      dl dd {
        margin: 0 0 15px;
        padding: 0 15px; }
        dl dd > :first-child {
          margin-top: 0; }
        dl dd > :last-child {
          margin-bottom: 0; }
    
    blockquote {
      border-left: 4px solid #dddddd;
      padding: 0 15px;
      color: #777777; }
      blockquote > :first-child {
        margin-top: 0; }
      blockquote > :last-child {
        margin-bottom: 0; }
    
    table {
      padding: 0; }
      table tr {
        border-top: 1px solid #cccccc;
        background-color: white;
        margin: 0;
        padding: 0; }
        table tr:nth-child(2n) {
          background-color: #f8f8f8; }
        table tr th {
          font-weight: bold;
          border: 1px solid #cccccc;
          text-align: left;
          margin: 0;
          padding: 6px 13px; }
        table tr td {
          border: 1px solid #cccccc;
          text-align: left;
          margin: 0;
          padding: 6px 13px; }
        table tr th :first-child, table tr td :first-child {
          margin-top: 0; }
        table tr th :last-child, table tr td :last-child {
          margin-bottom: 0; }
    
    img {
      max- 100%; }
    
    span.frame {
      display: block;
      overflow: hidden; }
      span.frame > span {
        border: 1px solid #dddddd;
        display: block;
        float: left;
        overflow: hidden;
        margin: 13px 0 0;
        padding: 7px;
         auto; }
      span.frame span img {
        display: block;
        float: left; }
      span.frame span span {
        clear: both;
        color: #333333;
        display: block;
        padding: 5px 0 0; }
    span.align-center {
      display: block;
      overflow: hidden;
      clear: both; }
      span.align-center > span {
        display: block;
        overflow: hidden;
        margin: 13px auto 0;
        text-align: center; }
      span.align-center span img {
        margin: 0 auto;
        text-align: center; }
    span.align-right {
      display: block;
      overflow: hidden;
      clear: both; }
      span.align-right > span {
        display: block;
        overflow: hidden;
        margin: 13px 0 0;
        text-align: right; }
      span.align-right span img {
        margin: 0;
        text-align: right; }
    span.float-left {
      display: block;
      margin-right: 13px;
      overflow: hidden;
      float: left; }
      span.float-left span {
        margin: 13px 0 0; }
    span.float-right {
      display: block;
      margin-left: 13px;
      overflow: hidden;
      float: right; }
      span.float-right > span {
        display: block;
        overflow: hidden;
        margin: 13px auto 0;
        text-align: right; }
    
    code, tt {
      margin: 0 2px;
      padding: 0 5px;
      white-space: nowrap;
      border: 1px solid #eaeaea;
      background-color: #f8f8f8;
      border-radius: 3px; }
    
    pre code {
      margin: 0;
      padding: 0;
      white-space: pre;
      border: none;
      background: transparent; }
    
    .highlight pre {
      background-color: #f8f8f8;
      border: 1px solid #cccccc;
      font-size: 13px;
      line-height: 19px;
      overflow: auto;
      padding: 6px 10px;
      border-radius: 3px; }
    
    pre {
      background-color: #f8f8f8;
      border: 1px solid #cccccc;
      font-size: 13px;
      line-height: 19px;
      overflow: auto;
      padding: 6px 10px;
      border-radius: 3px; }
      pre code, pre tt {
        background-color: transparent;
        border: none; }
    
  • 相关阅读:
    flv mime IIS设置
    正则表达式
    MATLAB out of memory
    Cyclic prefix
    Windows Live Writer Test
    zz排序算法的稳定性
    MATLAB的分数和小数
    young矩阵学习
    Python初体验(二)
    利用VS2010调用Excel的宏
  • 原文地址:https://www.cnblogs.com/PrettyTom/p/6986904.html
Copyright © 2011-2022 走看看