我是非常初学的Python。所以我的问题可能很天真。 我刚开始研究这种语言主要是因为Numpy和Matplotlib等数学工具似乎非常有用。
事实上,我不知道python在数学以外的领域是如何工作的 我想知道是否有可能(如果是的话,如何?)使用Python来解决文本文件处理等问题。
更确切地说,可以解决这个问题:
我有两个文件A.txt和B.txt。 A.txt文件包含三列数字,如下所示
0.22222000 0.11111000 0.00000000
0.22222000 0.44444000 0.00000000
0.22222000 0.77778000 0.00000000
0.55556000 0.11111000 0.00000000
0.55556000 0.44444000 0.00000000
.....
B.txt文件包含三列字母F或T,如下所示:
F F F
F F F
F F F
F F F
T T F
......
文件A.txt和B.txt
中的行数相同我需要创建一个看起来像这样的文件
0.22222000 0.11111000 0.00000000 F F F
0.22222000 0.44444000 0.00000000 F F F
0.22222000 0.77778000 0.00000000 F F F
0.55556000 0.11111000 0.00000000 F F F
0.55556000 0.44444000 0.00000000 T T F
.......
换句话说,我需要创建一个包含3列A.txt的文件,然后创建3列B.txt文件。
有人可以帮我写python所需的行吗?
我很容易在fortran中做到这一点但是听说python中的脚本会小得多。 自从我开始用Python学习数学工具以来,我也希望将我的知识扩展到这种语言提供的其他机会。
提前致谢
答案 0 :(得分:4)
当然,Python可以用于文本处理(可能它甚至比数字作业更适合)。但是,有问题的任务可以使用单个Unix命令完成:paste A.txt B.txt > output.txt
这是一个不使用numpy
的Python解决方案:
with open('A.txt') as a:
with open('B.txt') as b:
with open('output.txt', 'w') as c:
for line_a, line_b in zip(a, b):
c.write(line_a.rstrip() + ' ' + line_b)
答案 1 :(得分:3)
如果你想将它们连接起来,那就好了。老式的方式,并将它们放在一个新文件中,你可以这样做:
a = open('A.txt')
b = open('B.txt')
c = open('C.txt', 'w')
for a_line, b_line in zip(a, b):
c.write(a_line.rstrip() + ' ' + b_line)
a.close()
b.close()
c.close()
答案 2 :(得分:0)
试试这个,将文件作为numpy数组读取
a = np.loadtxt('a.txt')
b = np.genfromtxt('b.txt',dtype='str')
如果是b,你需要genfromtext因为字符串内容。然后
np.concatenate((a, b), axis=1)
最后,你会得到
np.concatenate((a, b), axis=1)
array([['0.22222', '0.11111', '0.0', 'F', 'F', 'F'],
['0.22222', '0.44444', '0.0', 'F', 'F', 'F'],
['0.22222', '0.77778', '0.0', 'F', 'F', 'F'],
['0.55556', '0.11111', '0.0', 'F', 'F', 'F'],
['0.55556', '0.44444', '0.0', 'T', 'T', 'F']],
dtype='<U32')