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 はそれを保持します。

ファイルがテキストモードで開かれた場合 (特に明示的に指定しない限り、そうでした)、行末は常に何もない (最後の行のみ) か、正確に 1\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 に答える