【问题标题】:Consolidating two text files with Python用 Python 合并两个文本文件
【发布时间】:2011-04-22 20:30:26
【问题描述】:

我试图遍历两个不同的文本文件,并根据两个文件中每一行开头的帐号创建一个合并文件。我首先读取包含对帐单数据的主文件并读取每一行,直到找到与前一行不匹配的帐号,然后开始遍历第二个文件并尝试将任何匹配的帐号与前一行匹配从文件 1 中阻止。当我进入这部分时遇到问题。

一些示例数据是:

文件1 ....文件2
000990 000990 是我的伙伴
000990 000990 是我的伙伴
000760 000530 是我的伙伴
000760 000530 是我的伙伴
000530 000999 是我的伙伴
000530 000999 是我的伙伴
000999

期望的输出
000990
000990
000990是我的搭档
000990是我的搭档
000760
000760
000530
000530
000530 是我的伙伴
000530 是我的伙伴
000999
000999是我的搭档
000999是我的搭档

这是我迄今为止尝试过的代码。任何帮助或建议将不胜感激。 谢谢

x=open('testaccount.txt')
y=open('accountpartner.txt')
count=1
inv_count=1
for line in x:
    if count==1:
        a=x.readline()
        print('S'+line, end='')
    if line[0:6]==a[0:6]:
        print('S'+line, end='')
    elif line[0:6]!=a[0:6]:
        for inv_line in y:
            if inv_count==1:
                b=y.readline()
                if b[0:6]==a[0:6]:
                    print('I',b,end='')
        inv_count+=1
        print('break')
        print('S'+line,end='')
        a=line
        count=1
        continue
    count+=1
print('this is a',a)

标签: python iteration text-processing text-parsing


【解决方案1】:

为此使用字典。编写自己的排序合并要简单得多。

with open('accountpartner.txt') as aFile:
    lookup = {}
    for line in aFile:
        lookup[line[:6]]= line

def make_groups( source ):
    group = []
    key= None
    for line in source:
        if line[:6] != key:
            if group: yield key, group
            group= []
            key= line[:6]
        group.append( line )
    if group: yield key, group

with open('testaccount.txt') as main:
    for key, group in make_groups( main ):
        if key in lookup:
            print key, group, lookup
        else:
            print key, group, None

【讨论】:

    猜你喜欢
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 2012-08-12
    • 2013-04-22
    • 2020-11-22
    • 2014-12-02
    相关资源
    最近更新 更多