如何自动将大量文本格式化为 html?

How do I format a large amount of text into html automatically?

提问人:RTC222 提问时间:6/14/2019 更新时间:1/25/2022 访问量:6082

问:

我将在我的网站上发布一个博客。我经常会在文字处理器中写相当长的条目。我的网站有自定义的 html 和 css 标签,例如 -div class=“blog_post_para”-。

我会将文本转储到 .txt 文档中(完成后我会将其另存为 .html),但是手动将标签添加到每个段落和标题将缓慢而乏味。

是否有任何工具可以自动格式化开头带有“div”标签和结尾带有 /div 标签的段落。第 p 段和 /p> 标记也是如此。

我不想使用像 Dreamweaver 这样的 IDE。我只想格式化 .txt 文档或另存为 .html 的文本文档中的代码。

我可以将文字处理器文档输出到 html,但所有样式都是内联的,并且它们无法与我网站上的自定义样式匹配,因为文字处理器不知道它们的名称。默认样式不行 -- 我有自己的自定义 css 类。

它还必须用 [amp]#39 替换撇号;和破折号——

我打算以编程方式(在 Python 中)执行此操作,这可能是最自定义的解决方案,但这需要一些时间。

有这样的工具吗?

HTML CSS格式

评论


答:

3赞 The Qodesmith 6/14/2019 #1

既然这最终会出现在网页上,为什么不使用 JavaScript?一个非常简单的函数可以将纯文本转换为格式正确的标签,或者您想要的任何其他内容。例如:

function contentToHtml(text) {
  return text
    .split('\n\n')
    .map(paragraph => `<p>${paragraph}</p>`)
    .join('')
}

此函数假定您在分隔段落时按两次回车键。它将接受您的文本并将每个段落包装在标签中。<p>

评论

1赞 RTC222 6/14/2019
因此,我可以在您显示的代码中替换 <p class=“thisclass”> 标记。那行得通。谢谢好主意。
0赞 RTC222 6/14/2019
是的,我能看到。这就是我要做的。再次感谢。
0赞 The Qodesmith 6/15/2019
@RTC222 你是对的。您可以随心所欲地创建 html。类和所有。
1赞 nbura 6/14/2019 #2

您可能想研究一下 Jekyll,它是一个静态站点生成器,我认为它几乎是针对您的要求而设计的,特别是因为您正在发布博客。

作为奖励,它与 Github Pages 很好地集成在一起,因此您可以获得免费托管。

https://help.github.com/en/articles/using-jekyll-as-a-static-site-generator-with-github-pages

评论

0赞 RTC222 6/14/2019
这三个都是很好的答案。在选择最佳答案之前,我将尝试这些想法中的每一个。非常感谢所有回答的人。
1赞 OPTIMUS PRIME 6/14/2019 #3

另一个 JavaScript 解决方案(单击“确定”):

JsFiddle 演示

(function(){

let inp = document.getElementById('input');
let res = document.getElementById('result');
let ok  = document.getElementById('ok');
ok.addEventListener('click', function(){
  let open  = document.getElementById('open').value;
  let close = document.getElementById('close').value;
  let str = inp.value;

  // The main magic is going here:  .replace('something', 'with smth else')
  str = str.replace(/^(.)/gm, open + '$1')  //Match any non-empty (.) new line ^
           .replace(/(.)$/gm, '$1' + close);  // Any non-empty (.) line ending $.

  res.value = str;
});

})();
*{margin: 0;}
#input, #result {
  display: block;
  border: 3px solid orange;
  width: 500px; height: 80px;
  margin: 5px; outline: none;
}
#ok {
  padding: 2px 50px;
  outline: none;
  cursor: pointer;
  margin: 0 5px;
}
#open, #close {
  width: 200px; padding: 3px;
  border: 3px solid orange;
  margin: 5px; outline: none;
}
<input id="open" placeholder="Beginning tag..." value="<div>">
<input id="close" placeholder="End" value="</div>">
<textarea id="input" placeholder="Input Text...">Test
Test

Test</textarea>
<button id="ok">OK</button>
<textarea id="result"></textarea>

要自由修改此示例并替换任何文本部分,您必须了解正则表达式。会有所帮助:


regex101.com 正则表达式备忘单

1赞 Stéphane Laurent 1/25/2022 #4

Prettydiff 适用于大文件。它还美化了嵌入的 CSS 和 JavaScript。这是一个质量很差的 gif,显示了一个用 prettydiff 美化的 25Mb html 文件:

enter image description here

更漂亮也很好。我不知道它是否处理大文件。