Python 中如何去掉字符串末尾的换行符?

Python 去掉末尾换行:rstrip() 去掉右侧所有空白(含换行),rstrip('\n') 只去换行,removesuffix('\n') 精确移除一个后缀。本文对比各方法差异。

最佳实践
Python 中如何去掉字符串末尾的换行符?封面

最常用: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(',') 只去一个。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台