在csv python中查找元素的最佳方法
我有一个非常大的csv文件,有超过50K个条目,并且不断增加。我的文件具有以下结构:在csv python中查找元素的最佳方法,python,csv,Python,Csv,我有一个非常大的csv文件,有超过50K个条目,并且不断增加。我的文件具有以下结构: ID;name;battery;... 101;a,3.3;... 102;b,3.3;... 103;c,3.2;... 我知道如何在python中读取csv文件,但我想知道如果csv文件上有新条目,最好的方法是什么,以避免重写新行 我是这样做的: if new_id in open(log.csv).read(): 任何帮助或建议都将不胜感激 编辑:我想按ID进行筛选避
ID;name;battery;...
101;a,3.3;...
102;b,3.3;...
103;c,3.2;...
我知道如何在python中读取csv文件,但我想知道如果csv文件上有新条目,最好的方法是什么,以避免重写新行
我是这样做的:
if new_id in open(log.csv).read():
任何帮助或建议都将不胜感激
编辑:我想按ID进行筛选避免重复的好方法是使用特殊的数据结构,针对搜索进行优化。例如,在Python中可以使用
set()
set()
基于哈希表,并提供具有时间复杂性的搜索O(n)
。模式如下:
将现有ID从文件读入set()
:
检查每个新行插入的条件:
# new_entry - is a new line
new_id = new_entry.split(',')[0] # get new id
if new_id not in entries:
file.write(new_entry) # Maybe newline appending is needed
entries.add(new_id) # Update a set of existing rows
是否要检查整行
103;c、 3.2,…
在文件中,或者只是id
?为了避免重写新行,您所说的是什么意思。你到底想做什么?我想知道是否写了一个“ID”来决定写一行新词
# new_entry - is a new line
new_id = new_entry.split(',')[0] # get new id
if new_id not in entries:
file.write(new_entry) # Maybe newline appending is needed
entries.add(new_id) # Update a set of existing rows