Saya menggelegak jawaban berdasarkan ekspresi reguler saya dari yang saya posting sebelumnya di komentar dari jawaban lain. Saya pikir menggunakan re
adalah 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\n
atau \n
tidak 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.rstrip
Strip sebanyak mungkin karakter trailing, jadi string seperti foo\n\n\n
akan menghasilkan false positive foo
sedangkan Anda mungkin ingin melestarikan baris baru lainnya setelah menelanjangi satu baris tambahan.)