Python CSV: czytanie i pisanie arkuszy kalkulacyjnych
Dowiedz się, jak obsługiwać dane CSV w Pythonie. Opanuj programy csv.reader, csv.writer i DictReader/DictWriter w celu wydajnego analizowania tabel.
Przegląd
CSV (wartości rozdzielane przecinkami) to wszechobecny format eksportowania i importowania danych z arkuszy kalkulacyjnych i relacyjnych baz danych. Ponieważ pliki CSV są prostymi plikami tekstowymi, są powszechnie obsługiwane przez narzędzia analityczne, platformy baz danych i języki programowania. Python posiada wbudowany moduł `csv` zoptymalizowany specjalnie do analizowania, zapisywania i manipulowania danymi tabelarycznymi bez konieczności korzystania z bibliotek innych firm, takich jak pandy.
Moduł csv udostępnia dwa podstawowe interfejsy: czytniki/zapisy oparte na listach i czytniki/zapisy oparte na słownikach. `csv.reader()` i `csv.writer()` reprezentują każdą linię pliku CSV jako listę ciągów znaków, co jest proste, ale wymaga odniesienia do kolumn według ich indeksu liczbowego. Aby uzyskać bardziej niezawodne podejście, programiści używają `csv.DictReader()` i `csv.DictWriter()`. Klasy te mapują każdy wiersz do słownika, używając wiersza nagłówka CSV jako kluczy, tworząc bardzo czytelny kod, który nie psuje się w przypadku zmiany kolejności kolumn.
W przypadku plików CSV ważne są szczegóły składni. Różne programy używają różnych ograniczników (takich jak tabulatory lub średniki) i w różny sposób obsługują cudzysłowy lub zakończenia linii. Moduł `csv` umożliwia definiowanie niestandardowych ograniczników, reguł cytowania i znaków ucieczki za pomocą parametru „dialect”. Dodatkowo podczas otwierania plików CSV w Pythonie krytycznym wymogiem jest przekazanie `newline=''` do funkcji `open()`, aby zapobiec problemom z pustymi liniami w różnych systemach operacyjnych.
Dane wyjściowe kodu i wykonania
Zapisywanie danych do pliku CSV za pomocą DictWriter i odczytywanie ich za pomocą DictReader.
import csv
filename = "employees.csv"
fieldnames = ["id", "name", "department"]
data = [
{"id": "101", "name": "Bob", "department": "HR"},
{"id": "102", "name": "Alice", "department": "Engineering"}
]
# Write dict data to CSV
with open(filename, "w", newline="") as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(data)
print("CSV written successfully.\n--- Reading CSV ---")
# Read CSV data back as dictionaries
with open(filename, "r", newline="") as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(f"Employee {row['name']} works in {row['department']}.")CSV written successfully.
--- Reading CSV ---
Employee Bob works in HR.
Employee Alice works in Engineering.Wdrażanie krok po kroku
- Eksportowanie rekordów arkusza kalkulacyjnego do analizy finansowej
- Import katalogów list kontaktów do baz danych
- Formatowanie wyników statystycznych ze skryptów obliczeniowych
Często zadawane pytania
Dlaczego muszę określić newline="" podczas otwierania pliku CSV?
Jest to wymagane przez wewnętrzny moduł zapisujący modułu csv, aby zapobiec wstawianiu dodatkowych pustych linii, szczególnie na platformach Windows.
Jak mogę przeanalizować plik CSV, który używa tabulatorów zamiast przecinków?
Możesz przekazać parametr ogranicznika do czytnika lub programu piszącego, np. csv.reader(file, delimiter='\t').
Powiązane tematy
Dowiedz się, jak czytać i zapisywać pliki w Pythonie. Opanuj menedżery open(), read(), write() i kontekstu, aby bezpiecznie obsługiwać operacje na plikach bez wycieków zasobów.
Parsowanie Pythona JSONDowiedz się, jak czytać, pisać i analizować dane JSON w języku Python. Opanuj json.loads, json.dumps i dostosuj kodery/dekodery JSON.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Jak czytać i analizować plik CSV w Pythonie
Dowiedz się, jak czytać i analizować pliki CSV w Pythonie, korzystając z wbudowanego modułu CSV. Opanuj czytanie jako listy, czytniki słowników i niestandardowe ograniczniki.
Ściągawka dotycząca metod ciągów w Pythonie
Kompletny przewodnik dotyczący manipulacji ciągami znaków w języku Python. Opanuj formatowanie, wyszukiwanie, dzielenie, zastępowanie i sprawdzanie właściwości ciągów.
Python kontra JavaScript: który język programowania jest najlepszy?
Kompleksowe porównanie Pythona i JavaScript. Poznaj różnice w składni, wydajność, przypadki użycia (backend vs frontend) i przykłady kodowania.