Wenn ich eine CSV-Datei in Numbers öffne, konvertiert es "hilfreich" Felder, die es als numerisch erkennt, indem es führende Nullen entfernt, Dinge konvertiert, die es als Datumsangaben erkennt, usw.
Angenommen , Sie geben einen UPC-Code in eine Numbers -Tabelle ein: 005566778899 , Numbers wandelt diesen automatisch in 5566778899 um . Das würde ich nicht wollen...
So wie ich Numbers verwende, öffne ich jedoch Datenbanken mit Tausenden von UPC-Codes mit vorangestellten Nullen. Einige von ihnen enthalten auch Daten , die Numbers ebenfalls umformatiert. Grundsätzlich möchte ich keine dieser Funktionen, ich möchte, dass meine Inhalte in Ruhe gelassen werden.
Das Konvertieren der Felder in Text nach dem Importieren hilft nicht, da die Daten bereits durcheinander gebracht wurden ...
Wenn ein Feld in einer CSV-Datei mit einem Apostroph ( '
) beginnt, behandeln sowohl Excel als auch Numbers das Feld als Text und geben es nicht mit einer numerischen Formatierung wieder.
Ihre CSV-Dateien scheinen zu versuchen, die Textwiedergabe durch das Einschließen von Zahlenfeldern in doppelte Anführungszeichen zu erzwingen, aber Numbers und Excel scheinen den Hinweis nicht zu akzeptieren, dass Zahlen in doppelten Anführungszeichen als Zeichenfolgen behandelt werden sollten. Der Trick scheint darin zu bestehen, die CSV-Dateien so zu ändern, dass sie den Trick „beginnt mit einem einzelnen Apostroph“ anstelle des Tricks „in doppelten Anführungszeichen enthalten“ für numerische Felder verwenden, aber die doppelten Anführungszeichen für Textfelder mit Satzzeichen beibehalten (einschließlich Kommas, Anführungszeichen, Zeilenumbrüche usw.).
Um Ihre CSV-Dateien so zu verarbeiten, können Sie eine Automator-Anwendung erstellen.
Erstellen Sie in Automator eine neue Anwendung.
Es wird eine einzige Aktion haben: Shell-Skript ausführen (Eingabe als Argumente übergeben). Hier ist das Skript:
for f in "$@"
do
perl -pi -e "s/\"\"([0-9A-Za-z: \.\-+]+)\"/'\1/g" "$f"
done
Speichern Sie die resultierende Anwendung auf Ihrem Desktop. Legen Sie alle CSV-Dateien, die Sie in Numbers verwenden möchten, auf dem Anwendungssymbol ab, und sie werden konvertiert, sodass Numbers die Zahlen in den Feldern als Literalzahlen beibehalten und sie nicht formatieren oder Informationen wegwerfen sollte.
Sichern Sie Ihre Daten, bevor Sie dies versuchen; Es ist möglich, dass eine besonders seltsam aufgebaute Zeichenfolge in einem Datensatzfeld die Ergebnisse hier verfälscht.
Im Einzelnen erfahren Sie hier, wie Sie mit führenden Nullen umgehen . Ich denke, Ihre Frage bezieht sich eher auf die Formatierung von Zellen als auf die Autokorrektur.
Wie bereits erwähnt, ist die Autokorrekturfunktion selbst ein Systemelement und muss in den Systemeinstellungen deaktiviert werden.
Huzzah, dank dieser und anderer Antworten gibt es jetzt eine Methode mit den folgenden Vorteilen:
Der Trick besteht darin, nicht jedem Feld ein Apostroph voranzustellen oder in doppelte Anführungszeichen zu setzen, sondern mit voranzustellen ="
und zu suffixieren "
. Beim Import behandelt Numbers den Feldinhalt als String und lässt beim Export das Präfix und Suffix fallen.
Hier ist ein praktischer Einzeiler, der eine Datei namens vorverarbeitet my.csv
:
sed 's/^/="/;s/,/",="/g;s/$/"/' my.csv | sed 's/=""//g' > tmp.csv
Der erste sed
setzt ="
am Anfang jeder Zeile, ändert jedes Komma in ",="
und beendet dann jede Zeile mit "
. Der zweite sed
entfernt dann alle leeren Felder, weil Numbers daran erstickt. Schließlich schreibt es eine Datei namens tmp.csv
, die doppelt angeklickt oder übergeben werden kann, open
um sie in Numbers zu importieren.
In der Praxis werden dadurch alle Felder verstümmelt, die Kommas enthalten. Es ist vielleicht besser, nur die Felder umzubrechen, die mit Zahlen beginnen, aber dann müssen Sie mit dem Anfang und Ende jeder Zeile und Ihrer Version regulärer Ausdrücke vorsichtig sein. Dies funktioniert unter macOS:
sed -E 's/(^|,)([[:digit:]][^,]*)($|,)/\1="\2"\3/g'
Das heißt, passen Sie den Anfang der Zeile oder ein Komma, eine Ziffer und dann eine beliebige Anzahl von Zeichen, die keine Kommas sind, dann das Ende der Zeile oder ein weiteres Komma an. Ersetzen Sie durch den gleichen Anfang und das gleiche Ende, aber mit dem mittleren Bit, das in ="
und gewickelt ist "
.
Daniel
Henryaaron
Heide Raftery