美文网首页python进阶
如何利用python docx自动化提取文档中代码段

如何利用python docx自动化提取文档中代码段

作者: aceblade | 来源:发表于2018-04-08 23:15 被阅读33次

    许多英文编程原版书籍中,并没有提供完整的源码,如果全部人肉实践,面对这样一部部大部头也是很辛苦的事情。

    好在我们有了docx模块工具,下面简单说明下如何利用python docx自动化提取英文文档中的代码。

    简单概述下这个问题,最近翻出了一本<linux shell scripting cookbook>。希望能实践下里面的一些命令行,手敲当然是没问题的。这也不符合一个程序员的习惯,翻了下python docx的文档。发现了一个途径如下:

    1 英文书籍中,source code和warning等都是特殊字体标注的

    2 转化英文书籍为docx格式,推荐calibre格式转化工具

    3 利用python docx读取docx文件,利用字体类型来判断是否为代码示例

    4 打印代码内容。如果书籍为pdf格式,类似步骤,不再实践。

    先来看疗效

    shine@z210:~/py$ python3  docx-rd.py  > shell-cookbook-cmd-log.txt

    成功抓取了这些内容,如下

    se@x:~/py$ head shell-cookbook-cmd-log.txt

    #!/bin/bash #Filename: print

    %s

    %-5s

    echo -e "1\t2\t3" 1 2 3

    echo -e "\e[1;31m This is red text \e[0m"

    echo -e "\e[1;42m Green Background \e[0m"

    cat /proc/$PID/environ

    $ pgrep gedit 12501

    $ cat /proc/12501/environ GDM_KEYBOARD_LAYOUT=usGNOME_KEYRING_PID=1560USER=slynuxHOME=/home/slynux

    $ cat /proc/12501/environ

    好了,最后附上简单的代码片段,运行环境python3

    se@x:~/py$ cat docx-rd.py

    #coding=utf-8

    from docx import Document

    document = Document(u'lssc.docx')#load the docx file

    for parap in document.paragraphs:#Iterate the paragraph

        if len(parap.runs) is not 0 and parap.runs[0].font.name == 'Courier New': #Here is an example

            print(parap.runs[0].text)#In this docs,Courier New is the source code font style,just print it!

    以上,谢谢阅览。

    相关文章

      网友评论

        本文标题:如何利用python docx自动化提取文档中代码段

        本文链接:https://www.haomeiwen.com/subject/gylvhftx.html