2017-12-23 19 views
0

リストをtxtファイルから読み込んでいますが、読み込んだ後に変数に保存するとPythonは文字列とリストを認識します。これを回避する方法はありますか?テキストファイルから読み込んだときにリストとして認識されないリスト

​​

出力:私はインデックス位置がリスト内に文字ではなく実際の位置(オブジェクト)を印刷していることにより、印刷するとき

['maths(easy).txt', 'joh17', 'C', 0.0, 0] 
' 

あなたが見ることができるように

+3

これらは「テキストファイルのリスト」ではありません。 ** text **です。答えは、単にオブジェクトの文字列表現をテキストファイルにダンプして[シリアライズ](https://en.wikipedia.org/wiki/Serialization)を呼び出すことではありません。多くのビルトインシリアル化フォーマットのうちの1つを使用します。任意のPython型の 'pickle'、または' json'です。この場合は良い選択です。 –

+0

私は、テキストが変数に保存されると、角括弧のためにテキストの形式をリストとして認識するだろうと考えていました。 – Fred

+0

それ以外の場合は、これを自分で解析する必要があります。これはちょうど 'eval' /' ast.literal_eval'を使うことができるように見えますが、実際には既存のシリアライゼーション形式を使うべきです。 JSONをお勧めします。 –

答えて

1

あなたは読み込むことができません文字列以外のファイルからのもの。あなたはastのように、そのためのPythonライブラリを使用する必要があります。

>>> ast.literal_eval("['maths(easy).txt', 'joh17', 'C', 0.0, 0]") 
['maths(easy).txt', 'joh17', 'C', 0.0, 0] 

これはあなたがインデックスにアクセスすることができ、実際のlist、として文字列を解釈します:

>>> ast.literal_eval("['maths(easy).txt', 'joh17', 'C', 0.0, 0]")[0] 
'maths(easy).txt' 

多くのためjsonまたはpickleに見てデータを格納するための直感的な方法。クライアントが実際にテキストファイルを評価するのではなくjson.loadsを呼び出すだけで、実際の文字列表現を実際に格納するのではなく、これらのメソッドの1つを使用する方が一般的に適しています。

関連する問題