用python提取文件中的两列并写入另一个文件中变成两行

用python提取文件中的两列并写入另一个文件中变成两行

这几天遇见个问题:
提取N个文件中的某两列,把它们写到另一个文件里,变成两行。
例如,现在有两个文件a.txt和b.txt

a.txt文件内容如下:

aaaa9aaaa9aaa
bbbb4bbbb4bba
cccc2cccc2ccc
sdfd3csdf5sdc
dfdf3sdfd3sdf
sdfk4sdlf8sdf
asdf5jsdl7eew
asdf6gefe6ere

c.txt文件内容如下:

aaaa9aaaa9aaaadfa
bbbb4bbbb4bbadfda
cccc2cccc2cccsdfa
sdfd3csdf5sdcddda
dfdf3sdfd3sdffasd
sdfk4sdlf8sdfdsdf
asdf5jsdl7eewdsfa
asdf6gefe6ereadfa
sdff5dsfa8sdfasdf
sdfa6dffa7dfsadfa

现在需要把a.txt和c.txt中的第5列和第10列提取出来,写入b.txt中

b.txt的内容应该如下:(中间有换行,表示换文件)

94233456
94253876

9423345656
9425387687

说明:此程序主要用于处理氨基酸序列文件。具体内容不列出!

程序如下,不太简洁。请指教:

fa = open('c:/c.txt','r') # change filename
fb = open('c:/b.txt','a')
a = fa.readlines()
for I in range(len(a)):
    fb.writelines(a[I][4])
fb.write('\n')
fa.close()
fb.close()
fa = open('c:/c.txt','r')
fb = open('c:/b.txt','a')
a = fa.readlines()
for I in range(len(a)):
    fb.writelines(a[I][9])   ##########
fb.write('\n\n')
fa.close()
fb.close()

运行说明:每次处理一个文件,例如a.txt,将第5和10列提出,写入b.txt后,
改变文件名,例如c.txt,再提取,继续写入b.txt,即可!

for i in range(len(a)):
    fb.writelines(a[4])    ## 这里应该有变量i出现吧?


QUOTE:
原帖由 tvb 于 2007-11-17 22:22 发表
for i in range(len(a)):
    fb.writelines(a[4])    ## 这里应该有变量i出现吧?

应该是html程序问题。
我在编辑状态下看,是有的啊!
一发表,就变成了a[4]了。
因为[I]  (将I变成i的话就是html中的斜体状态了)

请各位帮改下程序,这个不太简洁!



[Copy to clipboard] [ - ]
CODE:
import os
import cStringIO
def rip(oldfile, newfile):
    fin = file(oldfile)
    line1 = cStringIO.StringIO()
    line2 = cStringIO.StringIO()
    for line in fin:
        line1.write(line[4])
        line2.write(line[10])
    file(newfile, 'w').write(os.linesep.join((line1.getvalue(), line1.getvalue())))

rip('a.txt', 'c.txt')



QUOTE:
原帖由 jigloo 于 2007-11-18 11:46 发表


import os
import cStringIO
def rip(oldfile, newfile):
    fin = file(oldfile)
    line1 = cStringIO.StringIO()
    line2 = cStringIO.StringIO()
    for line in fin:
        line1.wri ...

很好啊。
十分感谢!