Python 中如何去掉字符串末尾的换行符?
Python 去掉末尾换行:rstrip() 去掉右侧所有空白(含换行),rstrip('\n') 只去换行,removesuffix('\n') 精确移除一个后缀。本文对比各方法差异。
最常用:s.rstrip('\n')——只去掉末尾的换行符。如果连空格、Tab 也要去掉用 s.rstrip();Python 3.9+ 可用 s.removesuffix('\n') 精确移除一个 \n。
各方法对比
s = "Hello, World!\n"
s.rstrip('\n') # "Hello, World!"——只去末尾换行
s.rstrip() # "Hello, World!"——去掉末尾所有空白(空格/Tab/换行)
s.removesuffix('\n') # "Hello, World!"——精确移除一个 \n(3.9+)
s.strip() # 连开头的空白也一起去掉
细微差别
s = "text\n\n\n"
s.rstrip('\n') # "text"——所有末尾换行都没了
s.removesuffix('\n') # "text\n\n"——只移除最后一个
s = "text \n"
s.rstrip('\n') # "text "——保留换行前的空格
s.rstrip() # "text"——空格也没了
读文件时的典型用法
with open('file.txt') as f:
for line in f:
line = line.rstrip('\n') # 每行末尾都有 \n,处理前先去掉
process(line)
Windows 的 \r\n
跨平台文件可能有 \r\n 行尾:s.rstrip('\r\n') 或直接用 s.rstrip() 更省心;open() 默认的通用换行模式会自动把 \r\n 转成 \n。
常见问题(FAQ)
Q:strip() 和 rstrip() 有什么区别?
A:strip() 去两端,rstrip() 只去右侧,lstrip() 只去左侧。参数是要去除的字符集合,不是固定后缀。
Q:rstrip('ab') 是什么意思?
A:去掉末尾所有的 'a' 和 'b' 字符(任意组合),不是去掉 "ab" 这个子串。要精确去子串用 removesuffix()。
Q:去掉末尾的逗号呢?
A:s.rstrip(',');或 s.removesuffix(',') 只去一个。