2024-04-25 06:18:26 发布
网友
Python与Perl的chomp函数的等价物是什么?如果字符串是换行符,该函数将删除字符串的最后一个字符?
chomp
我想说的是“pythonic”的方法来获得没有尾随换行符的行是splitlines()。
>>> text = "line 1\nline 2\r\nline 3\nline 4" >>> text.splitlines() ['line 1', 'line 2', 'line 3', 'line 4']
尝试方法rstrip()(参见文档Python 2和Python 3)
rstrip()
>>> 'test string\n'.rstrip() 'test string'
Python的rstrip()方法默认情况下会删除所有类型的尾随空白,而不是像Perl使用^{}时那样只删除一个换行符。
>>> 'test string \n \r\n\n\r \n\n'.rstrip() 'test string'
仅删除换行符:
>>> 'test string \n \r\n\n\r \n\n'.rstrip('\n') 'test string \n \r\n\n\r '
还有方法lstrip()和strip():
lstrip()
strip()
>>> s = " \n\r\n \n abc def \n\r\n \n " >>> s.strip() 'abc def' >>> s.lstrip() 'abc def \n\r\n \n ' >>> s.rstrip() ' \n\r\n \n abc def'
删除行尾(EOL)字符的标准方法是使用string r strip()方法删除任何尾随的字符。\r\n下面是Mac、Windows和Unix EOL字符的示例。
>>> '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'
使用'\r\n'作为r strip的参数意味着它将去掉'\r'或'\n'的任何尾随组合。这就是为什么它在以上三种情况下都有效。
这种细微差别在极少数情况下很重要。例如,我曾经不得不处理一个包含HL7消息的文本文件。HL7标准要求尾随'\r'作为其下线字符。我正在使用此消息的Windows计算机附加了自己的下线字符。因此,每行的结尾看起来像'\r\n'。使用rstrip('\r\n')会去掉整个'\r\n',这不是我想要的。在这种情况下,我只是把最后两个字符切掉。
请注意,与Perl的chomp函数不同,这将删除字符串末尾的所有指定字符,而不仅仅是一个:
>>> "Hello\n\n\n".rstrip("\n") "Hello"
我想说的是“pythonic”的方法来获得没有尾随换行符的行是splitlines()。
尝试方法
rstrip()
(参见文档Python 2和Python 3)Python的} 时那样只删除一个换行符。
rstrip()
方法默认情况下会删除所有类型的尾随空白,而不是像Perl使用^{仅删除换行符:
还有方法
lstrip()
和strip()
:删除行尾(EOL)字符的标准方法是使用string r strip()方法删除任何尾随的字符。\r\n下面是Mac、Windows和Unix EOL字符的示例。
使用'\r\n'作为r strip的参数意味着它将去掉'\r'或'\n'的任何尾随组合。这就是为什么它在以上三种情况下都有效。
这种细微差别在极少数情况下很重要。例如,我曾经不得不处理一个包含HL7消息的文本文件。HL7标准要求尾随'\r'作为其下线字符。我正在使用此消息的Windows计算机附加了自己的下线字符。因此,每行的结尾看起来像'\r\n'。使用rstrip('\r\n')会去掉整个'\r\n',这不是我想要的。在这种情况下,我只是把最后两个字符切掉。
请注意,与Perl的
chomp
函数不同,这将删除字符串末尾的所有指定字符,而不仅仅是一个:相关问题 更多 >
编程相关推荐