How can I remove a trailing newline?

前端 未结 28 4058
感动是毒
感动是毒 2020-11-21 23:27

What is the Python equivalent of Perl\'s chomp function, which removes the last character of a string if it is a newline?

28条回答
  •  孤街浪徒
    2020-11-21 23:50

    The canonical way to strip end-of-line (EOL) characters is to use the string rstrip() method removing any trailing \r or \n. Here are examples for Mac, Windows, and Unix EOL characters.

    >>> 'Mac EOL\r'.rstrip('\r\n')
    'Mac EOL'
    >>> 'Windows EOL\r\n'.rstrip('\r\n')
    'Windows EOL'
    >>> 'Unix EOL\n'.rstrip('\r\n')
    'Unix EOL'
    

    Using '\r\n' as the parameter to rstrip means that it will strip out any trailing combination of '\r' or '\n'. That's why it works in all three cases above.

    This nuance matters in rare cases. For example, I once had to process a text file which contained an HL7 message. The HL7 standard requires a trailing '\r' as its EOL character. The Windows machine on which I was using this message had appended its own '\r\n' EOL character. Therefore, the end of each line looked like '\r\r\n'. Using rstrip('\r\n') would have taken off the entire '\r\r\n' which is not what I wanted. In that case, I simply sliced off the last two characters instead.

    Note that unlike Perl's chomp function, this will strip all specified characters at the end of the string, not just one:

    >>> "Hello\n\n\n".rstrip("\n")
    "Hello"
    

提交回复
热议问题