Anfängerfrage: Python 3.0 und coding: cp1252

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich schließe mich dem ersten "Nein" an - UTF-8 ist der "way to go". Selbst notepad.exe kann das seit Jahren. Zu dem "es sei denn" möchte ich allerdings anmerken, dass es nicht automatisch cp-1252 ist, sondern dann notgedrungen das Encoding, welches der Editor benutzt. Das muss man dann hat einfach herhausfinden. Wahrscheinlich wird es das sein, was auch die Plattform standardmäßig benutzt und das ist wiederum hochgradig Betriebssystem- und Länderabhängig. Wenn's kein deutsches Windows ist, dann ist es auch nicht cp-1252.

Stefan
mkiever
User
Beiträge: 19
Registriert: Mittwoch 4. März 2009, 18:06
Wohnort: Braunschweig

Hallo,

da tut sich bei mir noch eine Frage auf:
Basieren die ganzen Hinweise auf "coding Zeile weglassen"
auf irgendeinem style-guide (bitte mit Referenz) oder ist das eine persönliche
Vorliebe?
Bei mir haben alle Python Quellen systematisch eine coding Angabe
(ich bin allerdings noch nicht bei Python 3).

Grüße,
Matthias Kievernagel
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Die coding-Zeile ist in Python 2.x nötig, denn dort ist das Default-Encoding für Quelltext ASCII. Wenn du etwas in der Datei hast was nicht-ASCII ist, ist das entweder eine Warnung oder ein SyntaxError. Daher wird in Python 2.x oft "coding: utf-8" geschrieben. In Python 3 braucht man dies nicht mehr zu machen, denn dort ist das Standardencoding für Dateien nicht mehr ASCII sondern UTF-8, da macht die coding-Zeile keinen Sinn, wenn es sowieso schon UTF-8 ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
barrio
User
Beiträge: 30
Registriert: Dienstag 26. Februar 2013, 13:15

Hi zusammen,

ich hätte auch ne kleine newbe-Anmerkung dazu:

Wenn man aus dem deutschen Tutorial 3.3 sniplets in den IDLE Editor (windows) kopiert, läuft das bei der HTML-Version problemlos. Beim PDF geht zum einen die Einrückung verloren und wenn man das manuell behebt kommt der "invalid character in identifier"-error, obwohl alles o.k. aussieht, z.B. mit ersten sniplet 4.7.1 def ask_ok... Bei der Fehlermeldung wird das "J" in complaint=’Bitte Ja oder Nein!’ rot markiert.

Werden da durch das PDF-Format irgendwelche nicht sichtbaren non-UTF-8-Zeichen mitkopiert oder was ist da los? :?
> (...(lambda...(it-schemes-i-must-be-jailed-in-braces? code)...))))))))))))))))))))))))))
#t
lunar

@barrio Nein. “Nicht sichtbare non-UTF-8-Zeichen“ ist Blödsinn…

Sieh Dir die Zeichen im Quelltext genau an, insbesondere die Anführungszeichen. Du wirst feststellen, dass im PDF, und mithin auch im daraus kopierten Quelltext nicht der Apostroph ' steht, sondern das rechte einfache Anführungszeichen ’. Woran das liegt, weiß ich nicht, ich nehme an, Sphinx – das Programm, mit dem HTML und PDF erzeugt werden – ersetzt Apostrophe durch diese Anführungszeichen, weil man in normalem Fließtext eigentlich typographisch korrekte Anführungszeichen haben möchte. Nur eben im Quelltext nicht…

Lesson learned: Kopiere Quelltext nie aus PDF-Dokumenten. Die sind nicht zum Kopieren, sondern zum Lesen und Drucken da, und mithin stehen da im Hinblick auf Lesbarkeit und Ästhetik mitunter andere Zeichen, als in syntaktisch korrektem Quelltext eigentlich erforderlich wären.

Und für die Zukunft: Grabe bitte keine uralten Themen für völlig unabhängige Fragen aus. Themen kosten nichts, und Du darfst wirklich gerne neue erstellen, wenn Du Fragen hast.
barrio
User
Beiträge: 30
Registriert: Dienstag 26. Februar 2013, 13:15

Zunächst mal danke für die schnelle Antwort.
barrio hat geschrieben:Und für die Zukunft: Grabe bitte keine uralten Themen für völlig unabhängige Fragen aus. Themen kosten nichts, und Du darfst wirklich gerne neue erstellen, wenn Du Fragen hast. Beitrag Verfasst:
Ich habe genau das gemacht, was man als Neuling indoktriniert bekommt: "§1 Benutze die Forensuche". Die Fehlermeldung kam darin vor und vom Thema (Pyhton 3 & encoding) schien er mir passend, so gut ich das beurteilen konnte. Wenn man einfach nen neuen Thread aufmacht, gibts doch auch schnell was auf die Mütze ("Das wurde doch schon unter XY behandelt"). Wenn in alte Beiträge nicht mehr gepostet werden soll, macht die doch zu.

Vielleicht können sich die "alten Hasen" auch ein wenig da hineinversetzen, dass sie selber mal angefangen haben. Wenn manche hier von newbe-Fragen genervt sind macht doch ne Anfängerecke auf, da muss ja nicht jeder reingucken.

cheers
> (...(lambda...(it-schemes-i-must-be-jailed-in-braces? code)...))))))))))))))))))))))))))
#t
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

barrio hat geschrieben:Wenn in alte Beiträge nicht mehr gepostet werden soll, macht die doch zu
Das wäre eine interessante Idee. Ich bin unter anderem in einem Forum wo alle Threads deren letzte Antwort älter als sechs Monate ist automatisch gesperrt werden (und keine Signaturen erlaubt sind, aber das ist eher eine Sache der Lesbarkeit).

Davon abgesehen ist es vollkommen legitim einen neuen Thread aufzumachen falls man ein Problem hat. Falls nicht, dann dienen alte Threads lediglich der Information, es verwirrt nur wenn jemand einen alten Thread wieder hervorholt um Hilfe zu bekommen oder einen sinnlosen Kommentar abzugeben.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

barrio hat geschrieben:Die Fehlermeldung kam darin vor und vom Thema (Pyhton 3 & encoding) schien er mir passend, so gut ich das beurteilen konnte.
Dein Problem ist doch aber "Ich kann nicht aus dem Tutorial nach IDLE pasten", noch dazu ist das Thema _weit_ spezifischer: Python 3.0 und ein spezifischer Codec.
barrio hat geschrieben:Wenn in alte Beiträge nicht mehr gepostet werden soll, macht die doch zu.
Das Posten in alte Topics ist gar nicht das Problem, denn hier wird eher die Meinung vertreten, dass es immernoch neue Aspekte geben kann. Wir sind schließlich keine Q&A Seite wie Stackoverflow und Konsorten.
Es wird aber zum Problem, wenn die Beiträge offtopic sind, schließlich wird es damit auch schwieriger die Suchfunktion zu benutzen, bzw daraus sinnvolle Ergebnisse zu bekommen.
barrio hat geschrieben:Vielleicht können sich die "alten Hasen" auch ein wenig da hineinversetzen, dass sie selber mal angefangen haben. Wenn manche hier von newbe-Fragen genervt sind macht doch ne Anfängerecke auf, da muss ja nicht jeder reingucken.
Ich weiss nicht wo du dieses "genervt sein" siehst. Ich kann zwar nicht für alle sprechen, aber ich bin hier unterwegs, um Leuten zu helfen. Aus meiner Erfahrung hier im Forum würde ich meine Hand dafür ins Feuer legen, dass es für alle anderen Regulars ebenso gilt.

Zusammenfassend: Wenn im Zweifel, erstelle ein neues Topic.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

barrio hat geschrieben:Ich habe genau das gemacht, was man als Neuling indoktriniert bekommt: "§1 Benutze die Forensuche".
Damit ist wohl eher gemeint "Benutze nicht die Forensuche um exakt das gleiche zu Fragen was vor einer Woche gefragt wurde." Ich habe auch hier im Forum schon mal zweimal die gleiche Frage auf der gleichen Seite in "Allgemeine Fragen" gesehen, weil Leute aus der gleichen Klasse die gleiche Frage hatten. Das ist dann tatsächlich frustrierend.
barrio hat geschrieben:Die Fehlermeldung kam darin vor und vom Thema (Pyhton 3 & encoding) schien er mir passend, so gut ich das beurteilen konnte. Wenn man einfach nen neuen Thread aufmacht, gibts doch auch schnell was auf die Mütze ("Das wurde doch schon unter XY behandelt"). Wenn in alte Beiträge nicht mehr gepostet werden soll, macht die doch zu.
Wir machen bewusst keine Themen zu, weil wer soll denn entscheiden ob ein Thema fertigbehandelt ist? Das bringt natürlich die Gefahr dass jemand einen alten Thread ausgräbt um dort etwas zu posten, was dazu führt dass alle die jemals vor x Jahren an dieser Diskussion ne Mail bekommen, auch wenn sie nicht mehr interessiert sind. Dies ist IMHO kein großes Problem wenns relevant ist, aber deine sache ist nur so semi-relevant (Threads mit Encoding-Fehlern machen grob 50% aller Threads hier aus), und dass einige Leute darauf genervt reagieren ist, finde ich, verständlich. Mir persönlich macht das nicht so viel aus um da jetzt irgendeine Position zu vertreten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
barrio
User
Beiträge: 30
Registriert: Dienstag 26. Februar 2013, 13:15

Vielen Dank für die regen Antworten, da das Thema jetzt eh total OT ist, möchte ich auch noch was dazu sagen. Das Hauptproblem ist mir klar geworden: Es geht nicht darum, generell keine alten threads auszugraben, sondern passend zu posten. Da werde ich mir nun als Heuristik merken: Im Zweifel lieber einen neuen Thread. Da die Differenzierungfähigkeit mit Kenntnis von Python & des Forums erst entsteht, werden die Pros mit einer gewissen Quote an semi-Fehlpostings bzw. überflüssigen neuen Themen wohl leben müssen, wenn newbe-Fragen erwünscht sind.

Dass Leute genervt sind schließe ich daraus wenn jemand eine Vermutung (die sicherlich nicht brilliant war) als erstes als "Blödsinn" bezeichnet. Das würde ich z. B. nicht machen, selbst wenn ich das denken würde. Wenn man weiß, worauf man achten muss, sieht man es natürlich sofort...
> (...(lambda...(it-schemes-i-must-be-jailed-in-braces? code)...))))))))))))))))))))))))))
#t
lunar

barrio hat geschrieben:Dass Leute genervt sind schließe ich daraus wenn jemand eine Vermutung (die sicherlich nicht brilliant war) als erstes als "Blödsinn" bezeichnet. Das würde ich z. B. nicht machen, selbst wenn ich das denken würde.
Ist es Dir lieber, wenn ich das das nächste Mal nur denke?
barrio
User
Beiträge: 30
Registriert: Dienstag 26. Februar 2013, 13:15

Etwas diplomatischere Formulierungen fände ich in der Tat freundlicher und motivierender... :)
> (...(lambda...(it-schemes-i-must-be-jailed-in-braces? code)...))))))))))))))))))))))))))
#t
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

barrio hat geschrieben:Etwas diplomatischere Formulierungen fände ich in der Tat freundlicher und motivierender... :)
Du hast recht. Du musst allerdings bedenken, dass du es hier zum großen Teil mit Software-Entwicklern und Programmierern zu tun hast. Das sind häufig Leute die die Charaktere in Big Bang Theory für völlig durchschnittliche Exemplare der Spezies "Mensch" halten. :mrgreen:

Wie ich in der Firma immer zu sagen pflege: "Ich wurde hier nicht wegen meiner Sozialkompetenz eingestellt.".
lunar

barrio hat geschrieben:Etwas diplomatischere Formulierungen fände ich in der Tat freundlicher und motivierender... :)
Dann werde ich versuchen, mir das zu merken, und möchte mich für meine Wortwahl entschuldigen.
barrio
User
Beiträge: 30
Registriert: Dienstag 26. Februar 2013, 13:15

Angenommen. Zu dem von /me erwähnten Klischee muss man nach dieser Geste in pythonspeak dann wohl sagen:

Code: Alles auswählen

>>> programmierer == SOZIALINSUFFIZIENT
FALSE
:)
> (...(lambda...(it-schemes-i-must-be-jailed-in-braces? code)...))))))))))))))))))))))))))
#t
BlackJack

@barrio: Wer auch immer den Datentyp von `programmierer` implementiert hat, sollte in der `__eq__()`-Methode besser `False` zurück geben, sonst veletzt er einen recht wichtigen Vertrag mit der Sprache. ;-)

Code: Alles auswählen

 In [4711]: programmer.soft_skills_index < averge_joe.soft_skills_index
Out [4711]: True
:-D
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich sehe jetzt gar nich das Problem :O
Antworten