0

我想知道是否有人可以帮助我合并两个文件。

第一个文件看起来像

AAAA

BBBB

中国交建

DDDD

电子电气设备

第二个就像

啊啊啊

bbbb

cccc

dddd

eee

我正在寻找最终结果为

啊啊啊啊

BBBBbbbb

中交cccc

DDDDdddd

EEEEeeee

到目前为止,我只能将第一个文件复制到另一个文件,但它总是最终会删除文件中最初包含的内容。

4

2 回答 2

2

这是一个使用的示例

结合.py

def read_lines(f):
    for line in f:
        if line.strip():
            yield line.strip()


def combine(lines):
    for (first, second) in lines:
        yield "%s%s\n" % (first, second)

lines1 = read_lines(open('first.txt'))
lines2 = read_lines(open('second.txt'))

lines = zip(lines1, lines2)

merged = '\n'.join(combine(lines))

with open('merged.txt', 'w') as outfile:
    outfile.write(merged)

此代码不假定重要的每一行都位于偶数行号,而是检查该行是否包含除空格以外的任何其他内容 - 如果是,则它正在处理,否则不是。

于 2013-11-02T18:07:59.240 回答
0

这是 Lokas Graf 的答案,稍作改写,使其一次只保存每个输入文件中的一行,而不是一次读取所有行。它还with用于文件 I/O。

from itertools import izip

def read_lines(f):
    for line in f:
        s = line.strip()
        if s:
            yield s

def collect_input(fname0, fname1):
    # Multiple open() on one with only works in Python 2.7 or 3.1+.
    # For Python 2.5, 2.6, or 3.0 you can use two nested with statements
    # or use contextlib.nested().
    with open(fname0, "rt") as f0, open(fname1, "rt") as f1:
        for line0, line1 in izip(read_lines(f0), read_lines(f1)):
            yield "%s%s\n" % (line0.strip(), line1.strip())

with open('merged.txt', "wt") as f:
    for line in collect_input('first.txt', 'second.txt'):
        f.write(line)
于 2013-11-02T21:53:46.617 回答