如果字符串是换行符,我如何删除它的最后一个字符?
"abc\n" --> "abc"
如果字符串是换行符,我如何删除它的最后一个字符?
"abc\n" --> "abc"
当前回答
这将完全复制perl的chomp(减去数组上的行为)作为“\n”行终止符:
def chomp(x):
if x.endswith("\r\n"): return x[:-2]
if x.endswith("\n") or x.endswith("\r"): return x[:-1]
return x
(注意:它不修改字符串“就地”;它不删除多余的尾随空格;考虑到\r\n)
其他回答
特殊情况的解决方案:
如果换行符是最后一个字符(大多数文件输入都是这样),那么对于集合中的任何元素,都可以按如下方式进行索引:
foobar= foobar[:-1]
剪切换行符。
我不使用Python编程,但我在Python.org上遇到了一个常见问题解答,建议使用Python 2.2或更高版本的S.rstrip(“\r\n”)。
"line 1\nline 2\r\n...".replace('\n', '').replace('\r', '')
>>> 'line 1line 2...'
或者你可以用regexp变得更古怪
我发现,通过迭代器获取压缩行很方便,与从文件对象获取未压缩行的方式类似。您可以使用以下代码执行此操作:
def chomped_lines(it):
return map(operator.methodcaller('rstrip', '\r\n'), it)
示例用法:
with open("file.txt") as infile:
for line in chomped_lines(infile):
process(line)
import re
r_unwanted = re.compile("[\n\t\r]")
r_unwanted.sub("", your_text)