1

我正在使用 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 将不是正确的机制,因为我可能会摆脱有用的空间。请记住,文件被空格填充到最大给定长度。

4

3 回答 3

5

objStreamReader.ReadLine 砍掉终止的换行符,而 Pythonfile.readline 保留它

如果您的文件是在文本模式下打开的(除非您明确指定,否则它是),行结尾将始终为空(仅最后一行)或恰好是一个\n,您可以使用rstrip('\n').

于 2013-02-26T01:37:43.517 回答
0

第 144 个字符是换行符。

with open("file_path") as file:
    for line in file:
        line = line.rstrip("\n") # strip newline
        print(len(line)) # should print 143 
于 2013-02-26T01:38:36.053 回答
0

使用列表推导,您可以执行以下操作:

def readfile():
    with open(filename, 'r') as fh:
        lines = [line.rstrip('\n') for line in fh.readlines()]
        for line in lines:
            print (line)
于 2019-04-14T21:14:11.943 回答