如果字符串是换行符,我如何删除它的最后一个字符?
"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)
其他回答
您可以使用line=line.rstrip('\n')。这将从字符串末尾删除所有换行符,而不仅仅是一行。
如果您的问题是清除多行str对象(oldstr)中的所有换行符,您可以根据分隔符“\n”将其拆分为一个列表,然后将此列表合并为一个新的str(newstr)。
newstr=“”.jjoin(oldstr.split('\n'))
只需使用:
line = line.rstrip("\n")
or
line = line.strip("\n")
你不需要这些复杂的东西
注意,rstrip的行为与Perl的chomp()不同,因为它不会修改字符串。也就是说,在Perl中:
$x="a\n";
chomp $x
结果$x为“a”。
但在Python中:
x="a\n"
x.rstrip()
将意味着x的值仍然是“a \n”。即使x=x.rstrip()也不总是给出相同的结果,因为它会从字符串末尾删除所有空格,而不是最多一个换行符。
import re
r_unwanted = re.compile("[\n\t\r]")
r_unwanted.sub("", your_text)