8
with open("text.txt", 'r') as file:
    for line in file:
        line = line.rstrip('\n' + '').split(':')
        print(line)

生成されている一連の配列で空のリストを削除しようとして問題が発生しています。のすべての行を配列にしtext.txtたいので、各行の各要素に個別に正確にアクセスできます。

空のリストは次のように表示さ['']れます - 4 行目でわかるように、明示的に削除しようとしました。空の要素は改行文字で満たされていましたが、これらは を使用して正常に削除されました.rstrip('\n')

編集:

一部の用語について誤解がありました。上記が更新されました。本質的に、空のリストを取り除きたいのです。

4

1 に答える 1

18

正確な行がわからないため、要件に完全に一致するソリューションを提供するのは難しいですが、空の文字列ではないリスト内のすべての要素を取得する場合は、次のようにします。

>>> l = ["ch", '', '', 'e', '', 'e', 'se']
>>> [var for var in l if var]
Out[4]: ['ch', 'e', 'e', 'se']

またはfilterと一緒に使用することもできます:Nonebool

>>> filter(None, l)
Out[5]: ['ch', 'e', 'e', 'se']
>>> filter(bool, l)
Out[6]: ['ch', 'e', 'e', 'se']

空の文字列を含むリストを取り除きたい場合は、特定の例でこれを行うことができます:

with open("text.txt", 'r') as file:
    for line in file:
        line = line.rstrip('\n' + '').split(':')
        # If line is just empty
        if line != ['']:
            print line
于 2013-11-09T11:55:12.720 に答える