Python 按照文件内容中的代码编写单独的文件

Python 按照文件内容中的代码编写单独的文件,python,group-by,Python,Group By,我有一个巨大的文件,它有四个不同的列。其中一列有“AB”、“BC”、“CA”等代码。我想为每个代码创建单独的文件。示例文件_AB包含所有四个字段,但代码字段仅为'AB'。 我想用python来做 with open("C:/Users/Desktop/JesseData/fileread.txt") as f1: with open("C:/Users/Desktop/JesseData/fileout.txt") as f2: for line in f1:

我有一个巨大的文件,它有四个不同的列。其中一列有“AB”、“BC”、“CA”等代码。我想为每个代码创建单独的文件。示例文件_AB包含所有四个字段,但代码字段仅为'AB'。 我想用python来做

with open("C:/Users/Desktop/JesseData/fileread.txt") as f1:
    with open("C:/Users/Desktop/JesseData/fileout.txt") as f2:
        for line in f1:
            if fourth_attribute == 'CA':
              f2.write(line)

我不会给你一个完整的代码来做这件事,但这里有一个开始:

步骤1:读取文件

如果你的文件很大,你会想把它分块读。为此,您可以跟踪在每个块中读取的行数,然后当迭代器达到限制时,将数据转储到单独的文件中。比如:

with open("raw_data.txt", 'r') as f:
    i = 0
    data = []
    for line if f:
        data.append(line)  #do some formatting here
        i += 1
        if i >= THRESHOLD:
             data_dump(data)
             data = []
             i = 0
这样,就可以防止整个文件一次全部存储在内存中

步骤2:将数据分组

数据\u dump
功能中,您需要对数据进行分组。这可以很容易地通过以下方法实现。此函数接受一个iterable和一个键,然后返回一个分组的迭代器。如果对数据进行格式化,其中每行都是该行中的值列表,并且您的键是第一个条目,则您的分组可能如下所示:

groups = itertools.groupby(data, key = lambda x: x[0])
请注意,
groupby()
需要排序的数据集,因此需要使用相同的键函数对数据进行排序。下面是一个简单的
groupby

>>> lst = [[1, 2,3],[1,4,5],[2,45,65]]
>>> import itertools
>>> groups = itertools.groupby(lst, key = lambda x: x[0])
>>> 
>>> for g in groups:
...     print g[0], list(g[1])
...
1 [[1, 2, 3], [1, 4, 5]]
2 [[2, 45, 65]]
步骤3:写入数据

数据分组后,只需循环分组,并将数据附加到相应的输出文件中。我建议保留一个文件句柄字典:

d = {"AB": open("AB.txt", 'a'), "BC", ....}

这样,当您循环所有循环时,您可以轻松地写入正确的文件

为什么不尝试一下并发布一些代码呢?非常感谢您提供了如此详细的解释。我的文件不是列表,而是包含以“;”分隔的属性。所以,有没有一种方法可以使用分隔符进行分组。