一点学习心得:Python3和Python2,PyDev和eclipse,win32com,正则表达式


  最近因为工作需要,要做一个操纵office文档的实用小工具,主要是Word表格和Excel数据。由于涉及到大量的文本解析动作,就决定顺便用Python和正则表达式来完成。

以下是过程中的一点感想:

  1. Python3和Python2 :开始用的ActivePython2.7,后来发现在对付中文字符上,Python3比Python2强实在太多,于是自然转换到3了。典型的就是,3里面随意的一句,到2里面就得改写成unicode("中文字符串","gbk")才能打印;
  2. PyDev和eclipse:由于程序就是1000来行,分成4个模块,每个就2、300行,因此开始就是直接用IDLE来编译运行,直接查看,没有用普通IDE的debug功能,后面碰到个问题,就是搞不定,其实是漏了个range,另外一个是office操作时总过不去,用打印输出方式调试,就算是200行也很困难。有同事用PyCharm,我后来就在Eclipse上装了个PyDev,终于能够方便地设置断点,单步调试,查看变量值,特别是缩进有对齐线,感觉是回到了现代社会的初级阶段,效率飙升。但是性能更好的开发机是win7系统,pyDev装不上。只好更换成PyCharm的社区版2018.1.2,用起来感觉差别不大,但毕竟是专用的,还是好一些。
  3. win32com和office操纵:原来有部分功能用宏VBA实现的。由于都是文档操作,虽然大家都推荐xlrd,但是考虑到方便转换和word文档控制,为了方便就直接用win32com了。基本上可以把VBA直接搬过来,只是要注意的一些点:
    • 常规问题:大小写,VBA不区分大小写,Python区分,这个有时搞得还是很烦,不过注意Python是首字符大写,其余小写基本就不会错,在Eclipse中观察颜色就好了;method和attribute在VBA里面区分不明显,但在python里面很明确;
    • 完成VBA--Python转换,关键就是Range的转换问题,克服了其中一些困难。这个小问题搞了快两个小时,差点就放弃了。2种成功的方式: 
       a OpRange =srcPlanDoc.Range(Start=sectStartPlace, End=sectEndPlace) 

                                       if OpRange.Tables.Count > 0 : 

       b srcPlanDoc.Content.Select()

  4.正则表达式:用正则表达式设置解析规则,用40行语句把原来200行的代码给替换掉,而且整个工作方式看起来非常合理,维护的话,只要修改正则表达式扩展规则就好了,灵活性、扩展性强大太多了。

    欢迎有类似的Python操纵Office文档需求的同好加我探讨。

      

猜你喜欢

转载自blog.csdn.net/hgstclyh/article/details/80201504