早就习惯使用wiki来编写分享项目文档了,编写快捷,修改查询方便,实在居家旅行,杀人越货的顶级装备。 但是以前的不少文档都是word格式的,转到wiki有点工作量,整个小程序来简化一下。
- 分析
此处假设word文件是以阿拉伯数字标题来区分章节的, 而wiki的章节是title的形式表现的。
比如word中的
1.2.3 xxxx
可以转换为对应wiki中的header
=== 1.2.3 xxxx ===
另外一种情况是列表
列表总是以数字+. 来表示,转换为对应的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也可以运行了,不过估计也没人使用,自己写了就是图好玩,哈哈。