Skocz do zawartości

Pobranie danych z wybranych komórek w pliku csv i porównanie z danymi w wybranych komórkach drugiego pliku csv


mmllmm

Pomocna odpowiedź

Witam
Docelowo będą dwa plik csv. Jeden plik będzie wypełniony danymi które będą używane do porównywania z danymi outputu aplikacji ( output będzie zapisywany w drugim pliku csv).
Chciałby aby wynik porównania danych z wybranej "komórki" pliku1.csv z wybraną komórką pliku output.csv był widoczny w oknie aplikacji.
Ilość komórek do porównania byłaby stała.
Wynik w oknie aplikacji mógłby wyglądać mniej więcej tak:

plik1.csv. komórka1 = A || output.csv.komórka1 = A || Wynik = OK
plik1.csv. komórka2 = A || output.csv.komórka2 = B || Wynik = NOK

Znalazłem dużo rozwiązań porównujących całe pliki csv ale dla mnie ważne byłoby aby móc decydować o każdej komórce z osobna.
Spotkaliście się z tego typu rozwiązaniem (python, tkinter)?

Link do komentarza
Share on other sites

Ja bym zrobił tak:

  • skrypt używający Polars żeby zmergować dwa pliki csv w jeden
  • załadowanie pliku wynikowego w Excel/Libreoffice Calc i tam robienie całego porównania
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Moduł csv do pythona, wczytanie dwóch plików oddzielnie i porównanie w pętli.

Wyświetlanie można zrobić na sto sposobów - tkinter, gtk, Qt, lokalny serwer www czy nawet ncurses jeśli ma działać w konsoli/terminalu.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dziękuję za informację.

Excel i inne dodatkowe oprogramowanie odpada. 

Pobranie konkretnej komórki zrobiłem przy pomocy :

import csv
with open('data.csv') as f:
    data = list(csv.reader(f))

print(data[row_num][column_num])

Z wyświetleniem danych w oknie też sobie poradziłem.

Jestem poczatkujący i chyba tkinter byłby najlepszym rozwiązaniem dla mnie.

W jaki sposób najprościej wykonać pętlę z danymi pochodzącymi z dwóch różnych plików csv?

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)

Jak wyglądają twoje dane w rzeczywistości? "Komórka w .csv" - masz na myśli cały wiersz, czy konkretną "komórkę" w wierszu danych, np. "aaa" w "1,aaa,bbb"?

Edytowano przez orb777
Link do komentarza
Share on other sites

(edytowany)

Na początku ilość i jakie komórki które muszą być porównane byłyby zawarte bezpośrednio w kodzie aplikacjii np.

import csv
with open('data1.csv') as f1:
    data1 = list(csv.reader(f1))

print(data1[1][1])
      

with open('data2.csv') as f2:
    data2 = list(csv.reader(f2))

print(data2[1][1])
      
     if data1==data2:
print("OK")
  else:
print("NOK")
  
  

W tym wypadku "OK" i "NOK" może być zmienną zależną od rezultatu porównania i byłaby wyświetlone w oknie w jednej linii  data1.csv. komórka1 = A || data2.csv.komórka1 = A || Wynik = OK

Można to wykonać prościej/lepiej?

 

 

Edytowano przez mmllmm
Link do komentarza
Share on other sites

Wczytać i tak musisz całe pliki, ale porównujesz na zasadzie:

if data1[y1][x1] == data2[y2][x2]:

Oczywiście zakładam  że pliki zmieszczą się w pamięci i chcesz porównywać komkretne komórki a nie wszystkie na raz.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

A jeśli chcesz robić porównanie komórka po komórce, bez ładowania całego pliku, to możesz otworzyć dwa pliki naraz w jednym "with". A potem iterować po obu plikach robiąc takie coś:

Cytat

for row1, row2 in zip(f1, f2):

 

Link do komentarza
Share on other sites

Dnia 29.04.2025 o 15:59, ethanak napisał:

Wczytać i tak musisz całe pliki, ale porównujesz na zasadzie:

if data1[y1][x1] == data2[y2][x2]:

Oczywiście zakładam  że pliki zmieszczą się w pamięci i chcesz porównywać komkretne komórki a nie wszystkie na raz.

Tak, chcę porównywać konkretne komórki.

Dnia 30.04.2025 o 15:48, Harnas napisał:

Jeśli chcesz budować jakiś interfejs graficzny, to zobacz https://streamlit.io/ . A tam już możesz zrobić wyświetlanie na wiele sposobów. Jest też gotowy komponent do tabel https://docs.streamlit.io/develop/api-reference/data/st.table

Czy to rozwiązanie wymaga stałego dostępu do internetu?

Raczej staram sie minimalizować zewnętrzne dodatki ponieważ spodziewam się, że w przyszłości będą wymagały dodatkowej uwagi/ subskrypcji.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...