早就习惯使用wiki来编写分享项目文档了,编写快捷,修改查询方便,实在居家旅行,杀人越货的顶级装备。 但是以前的不少文档都是word格式的,转到wiki有点工作量,整个小程序来简化一下。
  • 分析
    此处假设word文件是以阿拉伯数字标题来区分章节的, 而wiki的章节是title的形式表现的。

比如word中的

1.2.3 xxxx


可以转换为对应wiki中的header

 === 1.2.3 xxxx ===


另外一种情况是列表

 1.
 
2.


列表总是以数字+. 来表示,转换为对应的wiki列表只要前面多加一个空格符号就可以了。

  • 实现步骤
     1. 将word文件保存为文本文件, 可以使用copy -》 paste 到写字板的方法
     2. 使用word2py.py小程序把这个文本文件处理成wiki支持的格式, 再贴到wiki中就可以了
     3. 图片手工加入
  • word2py.py
    一个用python写的小程序, 运行时需要手工修改代码内的word txt文件名,需要安装python,并设置可执行文件目录在path下。

 


#!/usr/bin/python
#
 -*- coding: gbk -*-
import sys
import codecs
inputFile 
= "word.txt"
if len(sys.argv) > 1 :
    inputFile 
= sys.argv[1]
wordFile 
= open(inputFile);
#wordFile = codecs.open(inputFile, 'r', 'gbk');
wf = open("wiki.txt"'w'#need to encode before writting
#
wf = codecs.open("wiki.txt", 'w', 'gbk')
line = wordFile.readline();

while line:
    line 
= unicode(line, "gbk")
    
for i in range(0,len(line)):
        
try:
            int(line[0]) 
#not start with number
        except:
            
break
        header 
= line.split()[0]
        
if header.endswith(".") :
            line 
= " " + line # it's a list ,add a space char .
        else:
            count 
= 1
            
for j in range(0, len(header)):
                
if header[j] == "." :
                    count 
+= 1
            line 
= r" " + "="*count + " " +  line.replace('\n'""+ " " + "="*count + " \n"
        
break;
    wf.writelines(line.encode(
"gbk")); 
#    wf.writelines(line);
    line = wordFile.readline();
wf.close()

 

拷贝下来存为一个文件就可以了。

python处理中文极为不爽,实际这些脚本语言除了 groovy ,jython这样内部就是的unicode就没爽过,要转来转去的。 此处如果unicode不转成native ascii保存又会错。 另外pydev 不能正确处理中文,只能在命令行方式搞。

后来发现可以使用decodes的中提供的标准unicode方式来处理,不需要再手工转码,而且改用这种方式以后pydev也可以正常运行了。 貌似pydev调用python的shell有问题,如果涉及转码,回车什么的就会出错, pydev的牛人答复某人类似的问题说是python的bug。但是用这种方式不知道为啥删除行末的\n又不生效了。

最后用py2exe转换成exe文件, 压缩以后1m左右,不需要python也可以运行了,不过估计也没人使用,自己写了就是图好玩,哈哈。