admin管理员组

文章数量:1794759

在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别

在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。

 

 

本文标签: 区别文件换行符PythonLinux