Ich sprudle meine auf regulären Ausdrücken basierende Antwort von einer, die ich zuvor in den Kommentaren einer anderen Antwort gepostet habe. Ich denke, die Verwendung re
ist eine klarere und explizitere Lösung für dieses Problem als str.rstrip
.
>>> import re
Wenn Sie ein oder mehrere nachgestellte Zeilenumbrüche entfernen möchten:
>>> re.sub(r'[\n\r]+$', '', '\nx\r\n')
'\nx'
Wenn Sie Zeilenumbrüche überall entfernen möchten (nicht nur am Ende):
>>> re.sub(r'[\n\r]+', '', '\nx\r\n')
'x'
Wenn Sie nur 1-2 Newline Zeichen (dh entfernen \r
, \n
, \r\n
, \n\r
, \r\r
, \n\n
)
>>> re.sub(r'[\n\r]{1,2}$', '', '\nx\r\n\r\n')
'\nx\r'
>>> re.sub(r'[\n\r]{1,2}$', '', '\nx\r\n\r')
'\nx\r'
>>> re.sub(r'[\n\r]{1,2}$', '', '\nx\r\n')
'\nx'
Ich habe das Gefühl, was die meisten Leute hier wirklich wollen, ist, nur ein Vorkommen eines nachgestellten Zeilenumbruchs zu entfernen , entweder \r\n
oder \n
und nichts weiter.
>>> re.sub(r'(?:\r\n|\n)$', '', '\nx\n\n', count=1)
'\nx\n'
>>> re.sub(r'(?:\r\n|\n)$', '', '\nx\r\n\r\n', count=1)
'\nx\r\n'
>>> re.sub(r'(?:\r\n|\n)$', '', '\nx\r\n', count=1)
'\nx'
>>> re.sub(r'(?:\r\n|\n)$', '', '\nx\n', count=1)
'\nx'
(Das ?:
ist, um eine nicht erfassende Gruppe zu erstellen.)
(Übrigens ist dies nicht das, was '...'.rstrip('\n', '').rstrip('\r', '')
für andere, die über diesen Thread stolpern, möglicherweise nicht klar ist. str.rstrip
Entfernt so viele der nachfolgenden Zeichen wie möglich, sodass eine Zeichenfolge wie foo\n\n\n
ein falsches Positiv von ergibt, foo
während Sie möglicherweise die beibehalten möchten andere Zeilenumbrüche nach dem Entfernen eines einzelnen nachfolgenden.)