markdown 有字数限制吗?

markdown 有字数限制吗?

有没有办法通过命令行获取 Markdown(或者更好的是 Pandoc Markdown)中自然语言单词的字数?可以只使用wc来获得非常粗略的估计,但这种方法wc很幼稚,会将任何被空格包围的内容都算作一个单词。这包括标题格式、项目符号和链接中的 URL 等内容。

理想的做法是删除所有 markdown 格式(如果可能的话,包括 Pandoc 引用),然后将其传递出去wc,但我找不到这样做的方法,因为pandoc纯文本输出格式仍然包含很多 markdown 样式。

答案1

有一个新的 lua 过滤器:https://pandoc.org/lua-filters.html#counting-words-in-a-document

保存以下代码为wordcount.lua

-- counts words in a document

words = 0

wordcount = {
  Str = function(el)
    -- we don't count a word if it's entirely punctuation:
    if el.text:match("%P") then
        words = words + 1
    end
  end,

  Code = function(el)
    _,n = el.text:gsub("%S+","")
    words = words + n
  end,

  CodeBlock = function(el)
    _,n = el.text:gsub("%S+","")
    words = words + n
  end
}

function Pandoc(el)
    -- skip metadata, just count body:
    pandoc.walk_block(pandoc.Div(el.blocks), wordcount)
    print(words .. " words in body")
    os.exit(0)
end

然后像这样调用 pandoc:

pandoc --lua-filter wordcount.lua myfile.md

答案2

一个有点手动的解决方案:

  1. 用于pandoc将 markdown 文件转换为 MS Word 文档 ( *.docx) 或 OpenOffice/LibreOffice Writer 文档 ( *.odt)
  2. 在 LibreOffice 1中打开该文档
  3. 选择所有内容(ctrl+ a
  4. 菜单Tools>Word Count

1 OpenOffice 可能可以以相同的方式工作,但我还没有测试过。

答案3

我也面临同样的挑战,我写了一篇Python 脚本它会删除特殊字符和 Markdown/HTML 元素,并计算剩余的单词!

相关内容