Python strip()处理转义字符时换行符未移除问题排查
问题根因
你的循环逻辑没有修改原列表的元素:
for name in names遍历过程中,name是临时绑定的遍历变量,每次循环会依次指向列表里的对应字符串- Python中字符串是不可变对象,
strip('\n')不会修改原字符串,只会返回处理完成的新字符串 - 你写的
name = name.strip('\n')只是把临时变量name重新绑定到了处理后的新字符串上,并没有把新值写回names列表的对应位置,因此原列表内容从头到尾没有发生变化,打印时自然还保留着每行末尾的换行符。
正确实现方式
你可以选任意一种符合你使用习惯的写法:
- 方式1:遍历索引回写原列表
names = [] with open('./[path]/text_doc.txt', mode='r') as file: names = file.readlines() for idx in range(len(names)): names[idx] = names[idx].strip('\n') print(names)
- 方式2:列表推导式直接生成处理后的列表(更简洁推荐)
读取文件时直接完成行内容处理,不需要额外遍历修改:
with open('./[path]/text_doc.txt', mode='r') as file: names = [line.rstrip('\n') for line in file] print(names)
提示:如果只需要移除行尾的换行符,优先用
rstrip('\n'),避免strip()误删行首尾本来存在的有效空格;如果确实需要清除所有首尾空白字符(空格、制表符、换行等),再使用无参数的strip()。
内容的提问来源于stack exchange,提问作者moistnar
相关产品推荐
相关产品推荐

