早就習慣使用wiki來編寫分享項目文檔了,編寫快捷,修改查詢方便,實在居家旅行,殺人越貨的頂級裝備。 但是以前的不少文檔都是word格式的,轉(zhuǎn)到wiki有點工作量,整個小程序來簡化一下。
- 分析
此處假設word文件是以阿拉伯數(shù)字標題來區(qū)分章節(jié)的, 而wiki的章節(jié)是title的形式表現(xiàn)的。
比如word中的
1.2.3 xxxx

可以轉(zhuǎn)換為對應wiki中的header
=== 1.2.3 xxxx ===

另外一種情況是列表
列表總是以數(shù)字+. 來表示,轉(zhuǎn)換為對應的wiki列表只要前面多加一個空格符號就可以了。
- 實現(xiàn)步驟
1. 將word文件保存為文本文件, 可以使用copy -》 paste 到寫字板的方法
2. 使用word2py.py小程序把這個文本文件處理成wiki支持的格式, 再貼到wiki中就可以了
3. 圖片手工加入
- word2py.py
一個用python寫的小程序, 運行時需要手工修改代碼內(nèi)的word txt文件名,需要安裝python,并設置可執(zhí)行文件目錄在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這樣內(nèi)部就是的unicode就沒爽過,要轉(zhuǎn)來轉(zhuǎn)去的。 此處如果unicode不轉(zhuǎn)成native ascii保存又會錯。 另外pydev 不能正確處理中文,只能在命令行方式搞。
后來發(fā)現(xiàn)可以使用decodes的中提供的標準unicode方式來處理,不需要再手工轉(zhuǎn)碼,而且改用這種方式以后pydev也可以正常運行了。 貌似pydev調(diào)用python的shell有問題,如果涉及轉(zhuǎn)碼,回車什么的就會出錯, pydev的牛人答復某人類似的問題說是python的bug。但是用這種方式不知道為啥刪除行末的\n又不生效了。
最后用py2exe轉(zhuǎn)換成exe文件, 壓縮以后1m左右,不需要python也可以運行了,不過估計也沒人使用,自己寫了就是圖好玩,哈哈。