admin管理员组文章数量:1794759
在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别
【时间】2018.11.14
【题目】在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别
一、去除换行符
以使用readline进行读取为例:
import re data =[] f = open("data.txt", "r") line = f.readline() # 读取一行文件,包括换行符 # line = line[:-1] # 去掉换行符(方法1) #line = re.sub('\\n','',line) #方法2 line = line.strip() #方法3 data.append(line) while line: # 直到读取完文件 line = f.readline() # line = line[:-1] #line = re.sub('\\n','',line) line = line.strip() if line != '': data.append(line) f.close() print(data)二、在Windows与Linux中的区别 2.1windows
在window中,只要按照上面的代码即可去除换行符,即“\\n”会直接被去掉,如下:
没有去掉换行符时:
去掉换行符后:
2.2.Linux在Linux中,若直接去掉换行符(方法1与方法2),“\\n”不会直接被去掉,而是会被‘\\r’(回车符)代替,如下:
当然此时若再使用strip()也可以将‘\\r’去除。
如果使用方法3,即用strip(),则可以去除:
所以建议使用方法3去除换行符。
2018.11.24补充
三、在Windows与Linux中换行符有所区别的原因这主要是两种系统的换行符不同导致的,其中Linux的换行符时\\n,而Windows的换行符是\\r\\n(就是说当你在文本编辑器中敲下回车键或者在代码中(w模式下)使用write(‘\\n’)命令写入换行时,‘\\n’会自动转换为‘\\r\\n’,读取时‘\\r\\n’会自动转换为‘\\n’),当代码中的open是以‘r’模式打开时,两者没有区别,都是显示\\n,而当以二进制模式‘rb’打开时,就会显现出不同。下面是在Windows和Linux中的测试(data.txt都是直接用各自系统的文本编辑器输入内容的。):
代码:
f = open('data.txt','r') print(list(f)) f = open('data.txt','rb') print(list(f))Windows中运行结果:
Linux中运行结果:
因此,第二节中之所以出现在Linux中去除结尾的\\n还剩下\\r,是因为博主测试时的data.txt文件都是在Windows中编辑的,所以换行符在Windows中以文本方式显示是\\n,在Linux中以文本方式显示的是\\r\\n。
版权声明:本文标题:在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686870984a112894.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论