317

値を含む .txt ファイルがあります。

値は次のようにリストされます。

Value1
Value2
Value3
Value4

私の目標は、値をリストに入れることです。そうすると、リストは次のようになります。

['Value1\n', 'Value2\n', ...]

\n必要ありません。

これが私のコードです:

t = open('filename.txt', 'r+w')
contents = t.readline()

alist = []

for i in contents:
    alist.append(i)
4

11 に答える 11

430

これはあなたが望むことをするはずです(リスト内のファイルの内容、行ごと、\nなし)

with open(filename) as f:
    mylist = f.read().splitlines() 
于 2013-12-24T06:44:21.770 に答える
144

私はこれをします:

alist = [line.rstrip() for line in open('filename.txt')]

また:

with open('filename.txt') as f:
    alist = [line.rstrip() for line in f]
于 2013-03-05T20:44:30.157 に答える
127

文字列の末尾から改行のみ.rstrip('\n')を削除するために使用できます。

for i in contents:
    alist.append(i.rstrip('\n'))

これにより、他のすべての空白がそのまま残ります。行頭と行末の空白を気にしない場合は、大きな重いハンマーが呼び出され.strip()ます。

ただし、ファイルから読み取り、とにかくすべてをメモリにプルしているため、str.splitlines()メソッドを使用することをお勧めします。これは、1 つの文字列を行区切り記号で分割し、それらの区切り記号のない行のリストを返します。file.read()結果でこれを使用し、まったく使用file.readlines()しないでください:

alist = t.read().splitlines()
于 2013-03-05T20:25:12.597 に答える
23

ファイルを開いた後、リスト内包表記はこれを 1 行で実行できます。

fh=open('filename')
newlist = [line.rstrip() for line in fh.readlines()]
fh.close()

後でファイルを閉じることを忘れないでください。

于 2017-01-18T17:16:50.043 に答える
15

分割行が4 GBファイルでメモリエラーをスローしていたため、ストリップ関数を使用して改行文字を取り除きました。

サンプルコード:

with open('C:\\aapl.csv','r') as apple:
    for apps in apple.readlines():
        print(apps.strip())
于 2017-07-06T15:26:43.460 に答える
14

リスト内の各文字列に対して、文字列.strip()の先頭または末尾から空白を削除するを使用します。

for i in contents:
    alist.append(i.strip())

ただし、ユースケースによっては、ファイルから読み取っているデータの適切な配列が必要なnumpy.loadtxt場合でも、次のようなものを使用した方がよい場合があります。numpy.genfromtxt

于 2013-03-05T20:23:39.527 に答える
2

最近、これを使用してファイルからすべての行を読み取りました。

alist = open('maze.txt').read().split()

または、これを使用して、追加の安全性を少し高めることができます。

with f as open('maze.txt'):
    alist = f.read().split()

1 行のテキストの間に空白があると機能しませんが、サンプル ファイルには値を分割する空白がない可能性があります。これは単純な解決策であり、値の正確なリストを返し、空の文字列を追加しません:''ファイルの最後の改行など、すべての空の行に対して。

于 2015-08-25T20:49:26.713 に答える
-2

これを行う最も簡単な方法は、次のように書くことfile.readline()[0:-1] です。これは、改行である最後の文字を除くすべてを読み取ります。

于 2016-06-16T17:17:54.837 に答える