2016-06-21 9 views
4

Ich verwende immer Eclipse auf meinem Mac für Python-Programmierung. Heute habe ich Python in Visual Studio unter Windows programmiert. Als ich den Code auf der Eclipse meines Macs erneut ausführte, passierte etwas Seltsames und ich weiß nicht warum. Ich verwende Python 2.7 auf Eclipse und Visual Studio. Die Dateneingabe und der Code sind auch gleich. Die Dateneingabe ist im .txt-FormatWarum lesen Eclipse und Visual Studio den Python-String anders?

Dies ist eine Beispieldatenzeile:

<p>abcbdABCDE</p>pewpewpew 

In Visual Studio, könnte es erkennen gibt eine \n nach pewpewpew, aber Eclipse-konnte nicht.

Also, wenn ich endswith() Methode wurde verwendet wird, wenn ich endswith("</p>pewpewpew\n") geben könnte Visual Studio helfen, die ganze Reihe von Daten zu finden, aber Eclipse kann nicht, auch wenn ich versuchte endswith("</p>pewpewpew"), es kann immer noch nicht die ganze Linie erkennen.

Ich frage mich, ob dies aufgrund einiger Einstellungen in Eclipse ist oder Mac wird das TXT-Format ändern, wenn ich gerade die Daten heruntergeladen habe, die ich unter Windows verwendet?

Hinweis: In dem realen Problem, ich habe endswith() zu verwenden, nicht in oder not in verwenden kann

Simplified Codebeispiel (es auf Visual Studio nicht auf Eclipse funktioniert)

pth = "[file path]" 
f = open(pth) 

for l in f: 
    if l.endswith("</p>pewpewpew\n"): 
     print l 
+2

Können Sie ein minimales Codebeispiel erstellen, das das Problem reproduziert? –

+0

Ihr Problem hat nichts mit Eclipse oder Visual Studio zu tun, und alles, was damit zu tun hat, wie Zeilenumbrüche auf Ihren beiden Plattformen unterschiedlich behandelt werden. Sind Sie sicher, dass die beiden Dateien Byte für Byte identisch sind? – nitind

+0

Ich bin mir ziemlich sicher, dass die Dateneingabedatei gleich ist –

Antwort

1

Ich vermute, dass das Problem hier ist, wie Windows und Unix-ähnliche Systeme tatsächlich Zeilenumbrüche aufzeichnen. In Unix-ähnlichen Umgebungen wird ein einzelnes Zeichen "\ n" verwendet - das Zeilenvorschubzeichen. In Windows-Umgebungen werden zwei Zeichen verwendet, um eine neue Zeile zu kennzeichnen - "\ r \ n" - Wagenrücklauf und Zeilenvorschubzeichen.

Wenn die zu analysierende Datei in Windows geschrieben wurde, endet die Zeile mit "\ r \ n". Das ist meine beste Schätzung. VisualStudio ist wahrscheinlich so konfiguriert, dass "\ n" und "\ r \ n" auf ähnliche Weise behandelt werden. In Eclipse müssen Sie jedoch explizit angeben, dass die Zeile in "\ r \ n" endet.

Die beste Methode, um zu bestimmen, wie die Datei tatsächlich geschrieben wird, besteht darin, sie in einem Texteditor zu öffnen, der eine visuelle Interpretation nicht darstellbarer ASCII-Zeichen ermöglicht. Ich mache das in der Regel mit Notepad ++ und aktivieren Sie die Option "Alle Zeichen anzeigen".

Verwandte Themen