Im Python Discourse ist mir aufgefallen, dass mein RSS-Abonnement für die Kategorie users (umbenannt in „Hilfe“) nicht mehr funktioniert. Beim Versuch, es wiederherzustellen, führt das Abonnement https://discuss.python.org/c/users/7.rss zu ungültigen Inhalten, die mein Reader (Thunderbird) nicht laden kann. Es schlägt bei der Validierung am W3C fehl:
Da diese Prüfung fehlschlägt, gehe ich davon aus, dass ich nicht der Einzige bin, der davon betroffen ist.
Das Problem scheint ein unerwartetes Zeichen in dem Beitrag https://discuss.python.org/t/beginner-help-with-concatenating-arrays/36226 zu sein. Im Feed erscheint der fehlerhafte Teilstring als b'N \\x02x KSQT' (zweimal).
Das ist natürlich nicht die Schuld des Benutzers, sondern die von Discourse, weil es das durchgelassen hat, und die langfristige Lösung liegt bei Ihnen.
Ein Administrator dort (oder zumindest ein CPython Core Developer) hat mir vorgeschlagen, es hier zu melden.
PrettyText.format_for_email(p.cooked, p)
=> "<p>Hallo, ich versuche gerade, eine Machine-Learning-Pipeline zu befolgen, die in einem Paper beschrieben wird. Im Wesentlichen muss ich eine Eingabematrix erstellen, die die Größe N x KSDT hat. Das Paper beschreibt dies wie folgt: „Hier sind k, ks, kd und ksd Labels und keine Indizes, und alle Terme werden als Matrizen der gleichen Größe N x KSQT verstanden, sodass z. B. Xk keine Matrix der Größe N x K ist, sondern die vollständige Matrix der Größe N x KSQT mit N x k eindeutigen Werten, die KSQ Mal wiederholt werden.“</p>\n<p>Im Moment habe ich drei folgende np.arrays:<br>\n<br>\nbias_block: (348, 2, 151), bias_contrast: (348, 5, 151) und bias_decision: (348, 2, 151).<br>\n<br>\nNach meinem Verständnis müsste ich, um diese drei Arrays zu kombinieren, eine endgültige Größe von (348, 20, 20, 20, 151) haben. Ich habe jedoch wirklich Schwierigkeiten, diese Arrays zu kombinieren. Könnte mir da jemand bitte helfen, vielen Dank.</p>"
Ich sehe nicht, was an dieser Zeichenkette falsch ist … das N x KSDT scheint nichts zu verbergen.
(Beachten Sie, dass der Beitrag jetzt aus den neuesten herausgefallen ist, sodass RSS als Nebeneffekt wieder funktioniert, aber ich möchte dies auf jeden Fall beheben.
Ich gehe davon aus, dass dies die Zeile ist, aus der dies stammt:
Ich habe den Beitrag heute früher angesehen. Es gab einen Unicode-Hex-Code darin, der so etwas wie \u0026#x2610; war (\u0026#x2610;). Das ist jedoch nicht der genaue Code. Er wurde heute Morgen im Rohinhalt des Beitrags angezeigt (https://discuss.python.org/posts/121311.json). Es scheint seitdem bearbeitet worden zu sein.
Das erste Vorkommen ist in Ordnung, aber das zweite und dritte enthalten ein 0x02-Byte (wenn ich von dieser URL mit Firefox speichere und die Datei mit Python als Bytes lese), wie in meinem ersten Beitrag. validator.w3.org gab mir genügend Kontext, um das erste 0x02 in der Zeile zu finden.
U+002610 ist nur das Kastensymbol, das etwas damit ersetzt (aber nicht im RSS).
Ich habe darum gebeten, den Beitrag zu reparieren, da ich nicht glaube, dass mein Abonnement ohne dies funktionieren würde. Ich kann Ihnen meine gespeicherten Bytes zusenden, wenn es hilfreich wäre.
Gemäß der RSS 2.0-Spezifikation muss der Feed XML 1.0-konform sein. Und gemäß der XML 1.0-Spezifikation gibt es mehrere Steuerzeichen, die ungültig sind.
Der unten stehende PR ist ein erster Versuch, dies zu beheben: