"newline in string" erhalten, während die csv-Datei in Python gelesen wird?

8

Ich habe diese Datei utils.py in Django Architecture:

%Vor%

Hier ist der IP-Parameter nur die IPv4-Adresse, ich verwende Open Source MAXMIND GeoIPCountrywhois.csv file.

Einige Start Inhalte von GeopIOCountrywhois.csv :

%Vor%

Ich habe auch über das Thema gelesen, aber nicht so viel verständlich gefunden. Würden Sie mir bitte helfen, diesen Fehler zu lösen?

Gemäß meiner Methode in utils, überprüfe ich den Ländernamen des pasing-Parameters IP address auf die Methode.

    
Amit Pal 06.07.2012, 12:57
quelle

3 Antworten

7
  1. Sie können den CSV vorverarbeiten, indem Sie den Zeilenumbruch wie folgt entfernen.

    %Vor%

    Verwenden Sie dann GeoIPCountryWhois2 für den CSV-Reader.

  2. Ein wildes Guess mit einem Lineterminator kann Ihr Problem lösen

    %Vor%

    Siehe auch: Ссылка

shiva 06.07.2012, 13:18
quelle
13

hatte heute früher ein ähnliches Problem, es gab ein Endzitat, das in einer Zeile fehlt, und die Lösung besteht darin, reader anzuweisen, keine spezielle Verarbeitung von Anführungszeichen ( quoting=csv.QUOTE_NONE ) durchzuführen.

    
Jim Geovedi 05.01.2013 22:01
quelle
3

Sie müssen Ihre Dateien als Binärdatei öffnen:

%Vor%

Beachten Sie den 'rb' Modus dort; Andernfalls könnte die Datei mit nativen Zeilenenden geöffnet werden, und der CSV-Reader behandelt die verschiedenen Formulare nicht sehr gut. Sicherlich hat die Kopie von GeoIPCountryWhois.csv , die I heruntergeladen hat, saubere \n -Zeilenendungen.

Dies ist dokumentiert für die Methode .reader () :

  

Wenn csvfile ein Dateiobjekt ist, muss es mit dem 'b' Flag auf Plattformen geöffnet werden, wo dies einen Unterschied macht.

Wenn Ihre CSV-Datei jedoch so beschädigt ist, dass sie unerwartete Zeilenumbrüche an unerwarteten Stellen enthält, verwenden Sie stattdessen diese file -Unterklasse als Stop-Gap-Measure:

%Vor%

Diese Klasse garantiert, dass es nirgendwo in den zurückgegebenen Ergebnissen Zeilenumbrüche gibt, außer als letztes Zeichen (genau wie das csv-Modul es will). Verwenden Sie es anstelle des open -Aufrufs; Der Modifikator 'rb' mode wird in diesem Fall optional:

%Vor%     
Martijn Pieters 06.07.2012 13:31
quelle

Tags und Links