Étant donné une chaîne textuelle de source inconnue, comment la réécrit est-elle une meilleure réécriture d'avoir une londue connue-convention?
i habituellement: p> L'Onliner de ce que je fais bien sûr: p> ... ce n'est pas ce que je demande. p> Le nombre total de lignes doit être la même après, donc non Stripping de lignes vides. p> STÉDITION P> Modifier H2>
TESTCASES H2>
'a\nb\n\nc\nd'
'a\r\nb\r\n\r\nc\r\nd'
'a\rb\r\rc\rd'
'a\rb\n\rc\rd'
'a\rb\r\nc\nd'
'a\nb\r\nc\rd'
3 Réponses :
... Mais cela ne traite pas de fichiers texte «mixtes» de conventions totalement confuses (oui, ils existent toujours!) P>
En réalité, il devrait fonctionner correctement: p>
xxx pré> Quelle version de python utilisez-vous? p>
EDIT: STRUT> I Ne vois pas comment
splitlines () code> ne fonctionne pas pour vous: p>
xxx pré> aussi loin que je connais
splitlines () code > Ne divise pas la liste deux fois ou quoi que ce soit. P>
Pouvez-vous coller un échantillon du type d'entrée qui vous donne des problèmes? P> blockQuote>
J'ai édité ma question. Cette (convention mixte) a brisé un cas d'essai aujourd'hui :) Ah, les hypothèses que nous faisons ... J'espère éviter un O (n ^ 2) -Situation avec une double division.
+1 Ceci semble parfait! @kaleissin dis-tu que SplitLines () ne se divise pas à toutes les pauses de la ligne i> (quelle que soit la convention)? Je serais surpris ...
LEN ("A \ NB \ N \ N \ NC \ ND" .Splitlines ()) == 5 LEN ("A \ RB \ R \ NC \ ND" .splitlines ()) == 4 Ceci est Python 2.6.2. Fondamentalement, quand il est mélangé, je ne fais pas l'hypothèse que "\ n" ou "\ n \ r" devrait être considérée comme une seule nouvelle ligne logique.
Y a-t-il encore plus de convétions que \ r \ n \ code> et
\ n code>? Il suffit de remplacer
\ r \ n code> suffit si vous ne voulez pas de lignes.
DOS / Windows: \ 015 \ 012 code> (CRLF), Unix:
\ 012 code> (LF), Mac:
\ 015 code> (CR).
Vous pouvez utiliser OS.LineseP qui choisira le bon caractère Newline basé sur le système d'exploitation que le code s'allume.
mixed.replace('\r\n', '\n').replace('\r', '\n') should handle all possible variants.