改行なしでファイルを読むにはどうすればいいですか? 質問する

改行なしでファイルを読むにはどうすればいいですか? 質問する

Python では、eg を呼び出すと、temp = open(filename,'r').readlines()各要素がファイルの行であるリストが生成されます。ただし、これらの文字列の末尾には改行文字が含まれており、これは望ましくありません。

改行なしでデータを取得するにはどうすればいいでしょうか?

ベストアンサー1

ファイル全体を読み込み、行を分割するには、str.splitlines:

temp = file.read().splitlines()

または、手動で改行を削除することもできます。

temp = [line[:-1] for line in file]

注意:この最後の解決策は、ファイルが改行で終わる場合にのみ機能します。そうでない場合、最後の行の文字が失われます。

この仮定はほとんどの場合に当てはまります (特に、多くの場合、末尾に改行を追加するテキスト エディターで作成されたファイルの場合)

これを回避したい場合は、ファイルの最後に改行を追加することができます。

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]

または、より簡単な方法としては、strip代わりに改行を使用することです。

[line.rstrip('\n') for line in file]

あるいは、かなり読みにくいですが、次のようになります。

[line[:-(line[-1] == '\n') or len(line)+1] for line in file]

orこれは、 の戻り値がブール値ではなく、true または false として評価されたオブジェクトであるという事実を利用します。


このreadlinesメソッドは実際には次のメソッドと同等です。

def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines

readline()改行も保持されるため、改行もreadlines()保持されます。

注:readlines()対称性のためwritelines()メソッドは終了改行を追加しないため、のf2.writelines(f.readlines())正確なコピーが生成されます。ff2

おすすめ記事