Saya menggelegak jawaban berdasarkan ekspresi reguler saya dari yang saya posting sebelumnya di komentar dari jawaban lain. Saya pikir menggunakan readalah solusi yang lebih jelas untuk masalah ini daripada str.rstrip.
>>> import re
Jika Anda ingin menghapus satu atau lebih membuntuti karakter baris baru:
>>> re.sub(r'[\n\r]+$', '', '\nx\r\n')
'\nx'
Jika Anda ingin menghapus karakter baris baru di mana saja (tidak hanya mengekor):
>>> re.sub(r'[\n\r]+', '', '\nx\r\n')
'x'
Jika Anda ingin menghapus hanya 1-2 membuntuti karakter baris baru (yaitu, \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'
Saya memiliki perasaan apa yang sebenarnya diinginkan kebanyakan orang di sini, adalah untuk menghapus hanya satu kejadian karakter baris baru, baik \r\natau \ntidak lebih.
>>> 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'
(Itu ?: Adalah untuk membuat grup yang tidak menangkap.)
(Ngomong-ngomong ini bukan apa '...'.rstrip('\n', '').rstrip('\r', '')yang mungkin tidak jelas bagi orang lain yang tersandung pada utas ini. str.rstripStrip sebanyak mungkin karakter trailing, jadi string seperti foo\n\n\nakan menghasilkan false positive foosedangkan Anda mungkin ingin melestarikan baris baru lainnya setelah menelanjangi satu baris tambahan.)