如何删除(chomp)Python中的尾随换行符?
什么是Perl的chomp
函数的Python等价物,如果它是换行符,它将删除字符串的最后一个字符?
尝试方法rstrip()
(请参阅文档Python 2和Python 3)
>>> 'test stringn'.rstrip()
'test string'
Python的rstrip()
方法默认剥离各种尾随空白,而不仅仅是Perl对chomp
所做的一个新行。
>>> 'test string n rnnr nn'.rstrip()
'test string'
仅剥离换行符:
>>> 'test string n rnnr nn'.rstrip('n')
'test string n rnnr '
还有方法lstrip()
和strip()
:
>>> s = " nrn n abc def nrn n "
>>> s.strip()
'abc def'
>>> s.lstrip()
'abc def nrn n '
>>> s.rstrip()
' nrn n abc def'
我会说“pythonic”的方式来获取没有结尾换行符的行是splitlines()。
>>> text = "line 1nline 2rnline 3nline 4"
>>> text.splitlines()
['line 1', 'line 2', 'line 3', 'line 4']
剥离行尾(EOL)字符的规范方法是使用字符串rstrip()方法删除任何结尾的 r或 n。 以下是Mac,Windows和Unix EOL字符的示例。
>>> 'Mac EOLr'.rstrip('rn')
'Mac EOL'
>>> 'Windows EOLrn'.rstrip('rn')
'Windows EOL'
>>> 'Unix EOLn'.rstrip('rn')
'Unix EOL'
使用' r n'作为rstrip的参数意味着它会去掉任何' r'或' n'的尾部组合。 这就是为什么它在上述所有三种情况下都有效。
这种细微差别很重要。 例如,我曾经处理过一个包含HL7消息的文本文件。 HL7标准要求在尾部的' r'作为其EOL字符。 我使用此消息的Windows机器上附有其自己的' r n'EOL字符。 因此,每行的结尾看起来像' r r n'。 使用rstrip(' r n')会将整个' r r n'取下来,这不是我想要的。 在这种情况下,我只是将最后两个字符切掉。
请注意,与Perl的chomp
函数不同,这将剥离字符串末尾的所有指定字符,而不仅仅是一个:
>>> "Hellonnn".rstrip("n")
"Hello"
链接地址: http://www.djcxy.com/p/13517.html