在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别
【时间】2018.11.14【题目】在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别 一、去除换行符以使用readline进行读取为例:import redata =[]f = open("data.txt", "r")line = f.readline() # 读取一行文件,包括换行符# line = line[:-1
【时间】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。
更多推荐
所有评论(0)