2016-12-23 15 views
-2

.txtファイルをリストに変換し、リストを一度に変数に保存する方法はありますか?例えば : .txtファイルは次のように見える場合:テキストによる.txtファイルをPythonの変数に変換する

Blue,color,sky 
Red,color,blood 
Dog,animal,bark 

どのように私はそれが助けを

Things = {Blue,Red,Dog} 
Types = {color,animal} 
Related = {sky,blood,bark} 

感謝として保存しますか。..

+1

ファイルを読み込み、それを個々のトークン(青、犬、動物など)に解析し、それを変数に割り当てます。何を試しましたか? – Carcigenicate

+2

特別な方法はありません。しかし、これを 'JSON'や' YAML'(または 'Pickle')としておくともっと簡単になります。 – furas

+0

あなたは 'CSV'形式のデータを持っていますので、' csv'モジュールやもっと単純な 'pandas'モジュールを試すことができます。 – furas

答えて

4

ゴー、それぞれの行を削除して','に分割し、展開してzipmapsetに送信して割り当てを解凍します。あなたが使用できるよう

>>> text = '''Blue,color,sky 
... Red,color,blood 
... Dog,animal,bark'''.splitlines() # text can also be a file object 
>>> things, types, related = map(set, zip(*(i.strip().split(',') for i in text))) 
>>> things 
{'Dog', 'Blue', 'Red'} 
>>> types 
{'color', 'animal'} 
>>> related 
{'blood', 'bark', 'sky'} 
+0

偉大な答えですが、単にOPを使って明確にするために、ファイルを開く例はどうですか? – tdelaney

+1

@tdelaney - チュートリアルで説明したように、 'open( 'file.txt')をtext:'とするだけです。 – TigerhawkT3

0

あなたはCSV形式でデータを持っているpandas

import pandas as pd 

df = pd.read_csv(filename, names=['Things', 'Types', 'Related']) 

(多分それはこの小さな問題はあまりにも強力なモジュールです)、その後、あなたが使用することができます

things = set(df['Things']) 
types = set(df['Types']) 
related = set(df['Related']) 

StringIOを使用して実際のファイルをエミュレートするファイルライクなオブジェクトを作成する完全な使用例。

import pandas as pd 

import io 

data = '''Blue,color,sky 
Red,color,blood 
Dog,animal,bark''' 

f = io.StringIO(data) 

df = pd.read_csv(f, names=['Things', 'Types', 'Related']) 

print(df) 

things = set(df['Things']) 
types = set(df['Types']) 
related = set(df['Related']) 

print(things) 
print(types) 
print(related) 

結果

Things Types Related 
0 Blue color  sky 
1 Red color blood 
2 Dog animal bark 

{'Blue', 'Red', 'Dog'} 
{'animal', 'color'} 
{'bark', 'sky', 'blood'} 
0

、物事のために受け入れられた値を保持する関連するリストを定義およびタイプ

accepted_things = ["Blue", "Red", "Dog"] 
accepted_related = ["Sky", "Blood", "Bark"] 

things = [] 
related = [] 
//Same for Types 

with open(file_path, "r") as file : 
     for line in file : 
      results = line.split(",") 
      //Open file, loop through each line and separate values with comma 
      for i in results 
       if i in accepted_things : 
        things.append(i) 
       elif i in accepted_related : 
        related.append(i) 

多分ない最もエレガントなソリューションが、仕事は完璧に行われます。

関連する問題