Python 按照文件内容中的代码编写单独的文件
我有一个巨大的文件,它有四个不同的列。其中一列有“AB”、“BC”、“CA”等代码。我想为每个代码创建单独的文件。示例文件_AB包含所有四个字段,但代码字段仅为'AB'。 我想用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:
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", ....}
这样,当您循环所有循环时,您可以轻松地写入正确的文件为什么不尝试一下并发布一些代码呢?非常感谢您提供了如此详细的解释。我的文件不是列表,而是包含以“;”分隔的属性。所以,有没有一种方法可以使用分隔符进行分组。