Python:file.readline在行末添加空格
我在用Python读取一个用空格填充的文本文件。这个文本文件的验证要求是,每一行的长度必须是特定的,包括那些空格。
我用下面的代码时,Python读取的每一行却多了一个空格。例如,我希望fileX中的所有行都有143个字符,但Python却把它读成了144个字符,因此就说这个文件不合法。如果我用VB.NET做同样的事情,就能得到正确的143个字符。
为什么Python的readline函数会多出一个字符呢?(我用的是Python 3.2)
import io
myfile = open("file_path", "r")
while True:
line = myfile.readline()
if not line:
break
print(len(line)) #This prints 144 characters
VB.NET能正确返回143个字符的长度。
Using objStreamReader As StreamReader = New StreamReader(myFilePath)
While objStreamReader.EndOfStream = False
line = objStreamReader.ReadLine
len(line) 'This returns the correct length of 143.
使用line.strip并不是一个好办法,因为这样可能会删掉一些有用的空格。记住,这个文件是填充到一个最大长度的。
3 个回答
0
使用列表推导式,你可以像下面这样做:
def readfile():
with open(filename, 'r') as fh:
lines = [line.rstrip('\n') for line in fh.readlines()]
for line in lines:
print (line)
0
第144个字符是一个换行符。
with open("file_path") as file:
for line in file:
line = line.rstrip("\n") # strip newline
print(len(line)) # should print 143
7
objStreamReader.ReadLine
这个方法会把行末的换行符去掉,而Python的 file.readline
方法则会保留这个换行符。
如果你的文件是以文本模式打开的(除非你特别指定了其他方式,一般都是这样),那么行末的换行符要么是没有(只有最后一行),要么就是一个 \n
。所以你可以放心地用 rstrip('\n')
来去掉它。