Witam, potrzebuję pomocy z programem.
Mam dane w różnych plikach, które one mają wspólne ID - (kolumna 0)
Program ma wczytać te 2 pliki i utworzyć 3 w którym:
rekordy będą połączone jeśli mają takie same ID.
NP:
plik1 z nagłówkami:
ID;Var1
1;a
2;b
3;c
4;dplik 2:
ID;Var2
5;5
4;4
7;7
1;1Oczekiwany output:
ID;Var1;Var2
1;a;1
4;d;4
import csv
file1 = open(r"C:\1.csv")
data1 = csv.reader(file1, delimiter=';')
file2 = open(r"C:\2.csv")
data2= csv.reader(file2, delimiter=';')
csvfile = open(r"C:\output.csv", 'w', newline='')
spamwriter = csv.writer(csvfile, delimiter=';', quoting=csv.QUOTE_MINIMAL)
for var_file1 in data1: # biorę jedną linijkę z 1 pliku
for var_file2 in data2: # sprawdzam kolejno wszystkie linijki z 2 pliku
if var_file1[0] == var_file2[0]: # jeżeli ID w 2 różnych plikach jest takie samo
print(var_file1[0], var_file2[0]) # tego właśnie szukałem
spamwriter.writerow([var_file1[0], var_file1[1], var_file2[1]]) # zapisuję wartości do nowego pliku
break # znalazłem to co szukałem więc wracam do 1 for
else:
print(var_file1[0], var_file2[0]) # wypisuje żeby mieć świadomość tego co robi program
Break, to też dla mnie zagadka. Dodałem go w celu przyśpieszenia programu - tz. jeśli znaleziono parę, to nie ma sensu sprawdzać plik do końca, tylko wracam do pierwszego for.
Czyli z break/czy bez break Output powinien być taki sam, a w cale tak nie jest i tego też nie rozumiem dlaczego tak się dzieje.
Proszę o pomoc,
Program wygląda banalnie prosto i nie rozumiem co robię nie tak.