하나의 열이 있지만 620 만 개의 행을 포함하는 CSV 파일이 있습니다. 모두 6 자와 20 자 사이의 문자열을 포함합니다. 일부 문자열은 중복 (또는 그 이상) 항목에서 발견 될 것이며 새로운 CSV 파일에이 문자열을 쓰고 싶습니다. 약 1 백만 개의 고유하지 않은 문자열이 있어야합니다. 그게 사실입니다. 그러나 6 백만 항목의 사전을 통해 계속 검색하는 데는 시간이 걸리며, 어떻게해야하는지에 대한 조언을 주시면 감사하겠습니다. 지금까지 작성한 모든 스크립트는 내가 한 몇 가지 타이밍에 따라 적어도 일주일이 걸립니다 (!).매우 큰 csv 파일에서 검색 최적화
첫 번째 시도 :
in_file_1 = open('UniProt Trypsinome (full).csv','r')
in_list_1 = list(csv.reader(in_file_1))
out_file_1 = open('UniProt Non-Unique Reference Trypsinome.csv','w+')
out_file_2 = open('UniProt Unique Trypsin Peptides.csv','w+')
writer_1 = csv.writer(out_file_1)
writer_2 = csv.writer(out_file_2)
# Create trypsinome dictionary construct
ref_dict = {}
for row in range(len(in_list_1)):
ref_dict[row] = in_list_1[row]
# Find unique/non-unique peptides from trypsinome
Peptide_list = []
Uniques = []
for n in range(len(in_list_1)):
Peptide = ref_dict.pop(n)
if Peptide in ref_dict.values(): # Non-unique peptides
Peptide_list.append(Peptide)
else:
Uniques.append(Peptide) # Unique peptides
for m in range(len(Peptide_list)):
Write_list = (str(Peptide_list[m]).replace("'","").replace("[",'').replace("]",''),'')
writer_1.writerow(Write_list)
두 번째 시도 :
in_file_1 = open('UniProt Trypsinome (full).csv','r')
in_list_1 = list(csv.reader(in_file_1))
out_file_1 = open('UniProt Non-Unique Reference Trypsinome.csv','w+')
writer_1 = csv.writer(out_file_1)
ref_dict = {}
for row in range(len(in_list_1)):
Peptide = in_list_1[row]
if Peptide in ref_dict.values():
write = (in_list_1[row],'')
writer_1.writerow(write)
else:
ref_dict[row] = in_list_1[row]
편집 : 여기에 CSV 파일에서 몇 줄의 :
SELVQK
AKLAEQAER
AKLAEQAERR
LAEQAER
LAEQAERYDDMAAAMK
LAEQAERYDDMAAAMKK
MTMDKSELVQK
YDDMAAAMKAVTEQGHELSNEER
YDDMAAAMKAVTEQGHELSNEERR
게시하시기 바랍니다 몇 가지 전형적인 라인과 같은 일을 할 것입니다. – unutbu
문제는 전체 파일을 한 번에 읽는 것이므로 다른 사람에게 좋지 않습니다. 중복 된 줄만 출력하면된다. 'uniq -Di somefile.txt> duplicate_lines.txt' –
이상한 쉼표로 구분 된 값 (csv)은 분리 할 것이 없다. hehe! 나는 이것을 csv 파일로 생각하지 않을 것이다. –