Python应用:文件内容分析:纵向组合列表


                                这是上周四没发成功的帖子。
    现在工作的东西需要把策划文档中的Excel内容按列形成数组。考虑到有几个像这样的独立部分,并且以后修改的可能性也很大,正好可以用Python来方便地完成这个任务。
举个例子,比如:原来的文件是从Excel拷贝出来存为 parseWordGroup.txt,内容:
鹅 毛 河
南 方 鸡
江 南 人
青 草 鹅
青 色 方
红 花 子
花 草 色
则会生成result.txt:
c1Array = ["鹅","南","江","青","青","红","花"]
c2Array = ["毛","方","南","草","色","花","草"]
w0Array = ["河","鸡","人","鹅","方","子","色"]以下是程序源码,各位路过如果有空,请您留个改进意见啥的哦

。 [color="#008080"]# colsToArrays.py[color="#008080"]# encoding:gb2312[color="#0000ff"]import [color="#800000"]re[color="#0000ff"]import [color="#800000"]types[color="#008080"]# 数据文件[color="#000000"]sFrom[color="#00c600"]=[color="#ff00ff"]'parseWordGroup.txt'[color="#000000"]sResult[color="#00c600"]=[color="#ff00ff"]'result.txt'[color="#008080"]# 列数[color="#000000"]iCol[color="#00c600"]=[color="#000000"]3[color="#008080"]# 建立目标数组[color="#000000"]aProduce[color="#00c600"]=[color="#000000"][][color="#0000ff"]for [color="#000000"]i [color="#0000ff"]in [color="#808000"]range[color="#000000"](0,iCol):        [color="#000000"]aProduce[color="#00c600"].[color="#808000"]append[color="#000000"]([])[color="#0000ff"]print [color="#808000"]len[color="#000000"](aProduce)[color="#008080"]# 文件读打开[color="#000000"]fFrom[color="#00c600"]=[color="#808000"]file[color="#000000"](sFrom,[color="#ff00ff"]'r'[color="#000000"])[color="#008080"]# 析出分行列表[color="#000000"]aFrom[color="#00c600"]=[color="#000000"]fFrom[color="#00c600"].[color="#808000"]readlines[color="#000000"]()[color="#000000"]nLine[color="#00c600"]=-[color="#000000"]1[color="#008080"]# 分别取出对应的数组[color="#0000ff"]for [color="#000000"]l [color="#0000ff"]in [color="#000000"]aFrom:        [color="#00c600"]++[color="#000000"]nLine        [color="#000000"]m[color="#00c600"]=[color="#800000"]re[color="#00c600"].[color="#808000"]search[color="#000000"]([color="#ff00ff"]'\s*'[color="#00c600"].[color="#808000"]join[color="#000000"]([[color="#ff00ff"]'(\S\S)'[color="#000000"]][color="#00c600"]*[color="#000000"]3),l)        [color="#0000ff"]if [color="#808000"]type[color="#000000"](m)![color="#00c600"]=[color="#800000"]types[color="#00c600"].NoneType[color="#000000"]: [color="#008080"]# 可以匹配                [color="#0000ff"]for [color="#000000"]i [color="#0000ff"]in [color="#808000"]range[color="#000000"](0,iCol):                [color="#000000"]aProduce[color="#00c600"].[color="#808000"]append[color="#000000"](m[color="#00c600"].[color="#808000"]group[color="#000000"](i[color="#00c600"]+[color="#000000"]1))[color="#008080"]# 对目标数组取标识名[color="#0000ff"]def [color="#000000"]getTgtAryId(i):[color="#0000ff"]if [color="#000000"]i[color="#00c600"]        [color="#0000ff"]return [color="#ff00ff"]"c"[color="#00c600"]+[color="#808000"]str[color="#000000"](i[color="#00c600"]+[color="#000000"]1)[color="#0000ff"]else[color="#000000"]:        [color="#0000ff"]return [color="#ff00ff"]"w"[color="#00c600"]+[color="#808000"]str[color="#000000"](i[color="#00c600"]-[color="#000000"]2)[color="#008080"]# 将结果写入文件[color="#000000"]fRs[color="#00c600"]=[color="#808000"]file[color="#000000"](sResult,[color="#ff00ff"]'w'[color="#000000"])[color="#0000ff"]for [color="#000000"]i [color="#0000ff"]in [color="#808000"]range[color="#000000"](0,iCol):        [color="#000000"]sLine[color="#00c600"]=[color="#000000"]getTgtAryId(i)[color="#00c600"]+[color="#ff00ff"]'Array = ["'[color="#000000"]\        [color="#00c600"]+[color="#ff00ff"]'","'[color="#00c600"].[color="#808000"]join[color="#000000"](aProduce)[color="#00c600"]+[color="#ff00ff"]'"]'        [color="#000000"]fRs[color="#00c600"].[color="#808000"]write[color="#000000"](sLine[color="#00c600"]+[color="#ff00ff"]'\n'[color="#000000"])[color="#000000"]fRs[color="#00c600"].[color="#808000"]close[color="#000000"]()