Καθαρισμός CSV: τα προβλήματα που πρέπει να ελέγξετε, με τη σειρά
Για να καθαρίσετε ένα ακατάστατο αρχείο CSV, διορθώστε το σε επίπεδα: πρώτα οι χαρακτήρες, μετά η διάταξη και μετά το τι σημαίνει κάθε στήλη. Το CSV είναι απλό κείμενο, οπότε τα περισσότερα προβλήματα οφείλονται σε λάθος χαρακτήρες, επιπλέον γραμμές ή διαχωριστικά, ή σε τιμές που ένα πρόγραμμα τις διαβάζει διαφορετικά από ό,τι εσείς. Διορθώστε πρώτα τους χαρακτήρες. Ένα κρυφό κενό μπορεί να εμποδίσει μια ημερομηνία να αναγνωριστεί ως ημερομηνία, και τότε οι επόμενες διορθώσεις αποτυγχάνουν χωρίς σαφή λόγο.
Καθαριστής CSVCSV με κενά και διπλότυπαΚάντε το δωρεάνΧαρακτήρες που φαίνονται σωστοί και δεν είναι
Περιττά κενά. Ένα κενό στην αρχή ή στο τέλος ενός κελιού, ή δύο κενά στη μέση μιας τιμής, κάνει το «Berlin » και το «Berlin» δύο διαφορετικές τιμές για μια αναζήτηση, ένα φίλτρο ή μια σύνδεση.
Αόρατοι χαρακτήρες. Ορισμένοι χαρακτήρες δεν καταλαμβάνουν χώρο στην οθόνη:
- Ένα μη διακοπτόμενο κενό (U+00A0) μοιάζει με κανονικό κενό, αλλά είναι άλλος χαρακτήρας. Οι ιστοσελίδες το χρησιμοποιούν για να κρατούν μαζί λέξεις.
- Ένας χαρακτήρας μηδενικού πλάτους (U+200B) δεν έχει καθόλου πλάτος.
- Ένα σημάδι σειράς bytes (U+FEFF) μπορεί να βρίσκεται στην αρχή ενός αρχείου, πριν από την πρώτη κεφαλίδα. Η στήλη φαίνεται ως «id» αλλά είναι στην πραγματικότητα «id», οπότε μια αναζήτηση για «id» αποτυγχάνει.
Αφαίρεση αόρατων χαρακτήρων δείχνει τι βρίσκει πριν αλλάξει οτιδήποτε.
Χαλασμένα γράμματα. Το «Ã©» εκεί που περιμένετε «é» είναι πρόβλημα κωδικοποίησης, που ονομάζεται mojibake. Το αρχείο αποθηκεύτηκε σε UTF-8, όπου το é καταλαμβάνει δύο bytes, και μετά διαβάστηκε ως Windows-1252, όπου αυτά τα δύο bytes γίνονται δύο άσχετα γράμματα. Ένα απόστροφο «’» εμφανίζεται έτσι ως «â€™» με τον ίδιο τρόπο. Η λύση είναι να διαβάσετε το αρχείο ως UTF-8, ή να το εξαγάγετε ξανά από την πηγή με επιλεγμένο το UTF-8. Η διόρθωση κειμένου που έχει ήδη αποθηκευτεί λάθος είναι ευαίσθητη, οπότε κρατήστε το αρχικό αρχείο και δουλέψτε σε αντίγραφο.
Διάταξη: γραμμές τίτλου, κενές γραμμές και διπλότυπα
Οι αναφορές συχνά ξεκινούν με έναν τίτλο, μια ημερομηνία και μια κενή γραμμή πάνω από την πραγματική κεφαλίδα. Διαγράψτε όλα όσα βρίσκονται πάνω από τη γραμμή κεφαλίδας, ώστε η πρώτη γραμμή να περιέχει τα ονόματα των στηλών. Κάθε στήλη χρειάζεται ένα όνομα, και κανένα όνομα δεν πρέπει να είναι κενό.
Κάθε γραμμή πρέπει να έχει τον ίδιο αριθμό πεδίων. Ένα περιττό κόμμα μέσα σε μια τιμή που δεν είναι σε εισαγωγικά προσθέτει ένα πεδίο, και κάθε τιμή μετά από αυτό μετακινείται μία στήλη δεξιά. Μετρήστε τα πεδία σε κάθε γραμμή. Μια γραμμή με διαφορετικό πλήθος είναι χαλασμένη.
Τα διπλότυπα είναι δύο ειδών. Γραμμές πανομοιότυπες σε κάθε στήλη προέρχονται συνήθως από εξαγωγή ή επικόλληση δύο φορές, και μπορούν να αφαιρεθούν με ασφάλεια. Γραμμές που έχουν το ίδιο κλειδί αλλά διαφέρουν αλλού μπορεί να είναι ενημερώσεις. Αν διαγράψετε τη λάθος, μπορεί να σβήσετε τη νεότερη έκδοση, οπότε ελέγξτε τις πρώτα.
Ημερομηνίες: το 03/04/2026 μπορεί να είναι δύο διαφορετικές μέρες
Το 03/04/2026 είναι 3 Απριλίου σε μία χώρα και 4 Μαρτίου σε μια άλλη, και το κείμενο δεν λέει ποια. Κοιτάξτε τις άλλες ημερομηνίες της ίδιας στήλης. Αν κάποιος πρώτος αριθμός είναι μεγαλύτερος από το 12, η στήλη είναι με πρώτα την ημέρα. Αν κάποιος δεύτερος αριθμός είναι μεγαλύτερος από το 12, είναι με πρώτο τον μήνα. Αν κάθε τιμή έχει και τους δύο αριθμούς ίσους ή μικρότερους του 12, το αρχείο δεν μπορεί να το αποφασίσει, οπότε ρωτήστε το σύστημα προέλευσης. Ο έλεγχος τύπων δεδομένων επισημαίνει μια τέτοια στήλη ως αμφίσημη αντί να μαντεύει.
Όταν ξέρετε τη σειρά, μετατρέψτε κάθε ημερομηνία σε ISO 8601, τη μορφή έτος-μήνας-ημέρα όπως 2026-04-03. Είναι χωρίς αμφιβολία και ταξινομείται σωστά ως κείμενο. Μετατρέψτε τις μικτές μορφές μία μία, επειδή μια στήλη με και τα δύο στυλ θα διαβαστεί ασυνεπώς από τα περισσότερα προγράμματα.
Αριθμοί αποθηκευμένοι ως κείμενο
Ένας αριθμός αποθηκεύεται ως κείμενο όταν περιέχει σύμβολο νομίσματος, σύμβολο ποσοστού ή κενό μέσα του, όπως «€ 12», «45%» ή «1 234» με μη διακοπτόμενο κενό. Οι διαχωριστές χιλιάδων, όπως στο «1,234.50», συχνά κάνουν ένα πρόγραμμα να διαβάσει και την τιμή ως κείμενο. Ένα υπολογιστικό φύλλο εμφανίζει τους αριθμούς-κείμενο στοιχισμένους αριστερά, και τα αθροίσματα τους παραλείπουν.
Οι υποδιαστολές είναι η παγίδα. Στο «1.234,50» η κόμμα είναι η υποδιαστολή, και η τελεία ομαδοποιεί τις χιλιάδες. Στο «1,234.50» ισχύει το αντίστροφο. Άρα το «1,234» μπορεί να είναι 1234 σε μια εξαγωγή και 1.234 σε μια άλλη. Βρείτε τις τοπικές ρυθμίσεις (locale) της πηγής πριν μετατρέψετε, και μετά αφαιρέστε τους διαχωριστές χιλιάδων και μετατρέψτε την υποδιαστολή σε τελεία.
Τα μηδενικά στην αρχή χάνονται
Οι ταχυδρομικοί κώδικες, οι κωδικοί προϊόντων και οι αριθμοί λογαριασμών συχνά ξεκινούν με μηδενικά. Όταν ένα CSV ανοίγει σε υπολογιστικό φύλλο, το «01234» διαβάζεται ως ο αριθμός 1234, και τα μηδενικά χάνονται. Η αποθήκευση του αρχείου διατηρεί την απώλεια, οπότε το σύστημα προέλευσης είναι το μόνο αξιόπιστο αντίγραφο.
Ένα αναγνωριστικό είναι κείμενο, ακόμη κι όταν μοιάζει με αριθμό, επειδή δεν κάνετε ποτέ πράξεις με αυτό. Απενεργοποιήστε τη μετατροπή σε αριθμό για τέτοιες στήλες όταν καθαρίζετε το CSV, και ανοίξτε ξανά το αρχείο από την πηγή αντί από ένα αντίγραφο που έχει αποθηκευτεί από υπολογιστικό φύλλο. Ελέγξτε τον τύπο δεδομένων κάθε στήλης μετά, ώστε μια στήλη ταχυδρομικών κωδίκων να μην επιστρέψει αθόρυβα σε αριθμούς. Το Excel μπορεί επίσης να αλλάξει τιμές όταν ανοίγει ένα CSV, οπότε ελέγξτε το αποτέλεσμα σε προβολή απλού κειμένου.
Ελέγξτε τους τύπους, και μετά κάντε προφίλ
Μετά τον καθαρισμό, ελέγξτε τον τύπο κάθε στήλης. Ένα μόνο «N/A» σε μια στήλη τιμών μετατρέπει ολόκληρη τη στήλη σε κείμενο, και το σύνολό της βγαίνει λάθος. Ο έλεγχος τύπων δεδομένων δίνει σε κάθε στήλη έναν τύπο και έναν βαθμό βεβαιότητας, και εμφανίζει τα κελιά που δεν ταιριάζουν.
Έπειτα κάντε προφίλ στις στήλες. Το προφίλ στηλών δείχνει κενά και ακραίες τιμές σε κάθε στήλη. Μια ακραία τιμή μπορεί να είναι πραγματική τιμή, ή σφάλμα, όπως μια τιμή που είναι χίλιες φορές μεγαλύτερη από τις υπόλοιπες, κάτι που συχνά προέρχεται από λάθος τοποθετημένη υποδιαστολή ή διαχωριστή.
Ειδικές περιπτώσεις
- Αλλαγές γραμμής μέσα σε εισαγωγικά. Μια τιμή σε εισαγωγικά μπορεί να περιέχει αλλαγή γραμμής. Ένα εργαλείο που χωρίζει το αρχείο ανά γραμμές σπάει εκείνη τη γραμμή στα δύο, οπότε χρησιμοποιήστε έναν αναγνώστη που κατανοεί πεδία σε εισαγωγικά.
- Αρχεία με ερωτηματικά. Πολλά ευρωπαϊκά υπολογιστικά φύλλα αποθηκεύουν CSV με ερωτηματικά, επειδή η υποδιαστολή είναι το δεκαδικό διαχωριστικό στις τοπικές τους ρυθμίσεις. Ελέγξτε τον διαχωριστή πριν διαβάσετε τις στήλες.
- Κρατήστε το πρωτότυπο. Γράψτε το καθαρισμένο αποτέλεσμα σε νέο αρχείο, και κρατήστε την εξαγωγή όπως ήρθε.
Η σειρά, ως λίστα ελέγχου
- Κρατήστε ένα αντίγραφο της αρχικής εξαγωγής.
- Αφαιρέστε τα περιττά κενά και τους αόρατους χαρακτήρες. Διορθώστε τα χαλασμένα γράμματα από την πηγή, αν μπορείτε.
- Διαγράψτε τις γραμμές τίτλου, ελέγξτε τα ονόματα των κεφαλίδων και επιβεβαιώστε ότι κάθε γραμμή έχει τον ίδιο αριθμό πεδίων.
- Βρείτε τα διπλότυπα και αποφασίστε ποια έκδοση θα κρατήσετε.
- Μετατρέψτε τις ημερομηνίες σε έτος-μήνας-ημέρα, αφαιρέστε τους διαχωριστές και κάντε τα αναγνωριστικά κείμενο.
- Ελέγξτε τον τύπο κάθε στήλης και έπειτα κάντε προφίλ για κενά και ακραίες τιμές.
Σύντομες απαντήσεις
Γιατί η αναζήτησή μου αποτυγχάνει όταν οι τιμές φαίνονται πανομοιότυπες;
Συνήθως ένα κενό, ένα μη διακοπτόμενο κενό ή ένα σημάδι σειράς bytes βρίσκεται σε ένα από τα κελιά. Αφαιρέστε τους κρυφούς χαρακτήρες και δοκιμάστε ξανά.
Γιατί οι ημερομηνίες μου αλλάζουν σε κάτι άλλο;
Ένα πρόγραμμα διάβασε μια ημερομηνία με πρώτα την ημέρα ή με πρώτο τον μήνα με λάθος σειρά, ή μετέτρεψε το κείμενο στη δική του μορφή ημερομηνίας. Μετατρέψτε πρώτα εσείς τις ημερομηνίες σε έτος-μήνας-ημέρα.
Μετάφραση από το Αγγλικό πρωτότυπο με τη βοήθεια τεχνητής νοημοσύνης.
Σχόλια
Δεν υπάρχουν σχόλια ακόμη. Γίνετε οι πρώτοι.


