2016-06-27 8 views
-2

は、私は次の3つの辞書を持っていると言う:テーブルで3つの辞書のデータをタブでテキストファイルに書き込む方法は?

d1 = {'Ben': {'Skill': 'true', 'Magic': 'false'}, 'Tom': {'Skill': 'true', 'Magic': 'true'}} 
d2 = {'Ben': {'Strength': 'wo_mana', 'Int': 'wi_mana', 'Speed': 'wo_mana'}, 'Tom': {'Int': 'wi_mana', 'Agility': 'wo_mana'}} 
d3 = {'Ben': {'Strength': '1.10', 'Int': '1.20', 'Speed': '1.50'}, 'Tom': {'Int': '1.40', 'Agility': '1.60'}} 

私はwith open('filename', 'w') as f:

私の希望を使用して、.txtファイルまたは.csvファイルにタブで区切られたテーブルに上記3つの辞書のデータを書きたいです(Excelで開く)出力:これまでの

Name Skill Magic wo_mana   wi_mana 
Ben true false Strength = 1.10 Int = 1.20 
       Speed = 1.50 
Tom true true Agility = 1.60 Int = 1.40 

マイコード:

with open('output.txt', 'w')as f: 
    f.write("Name\tSkill\tMagic\two_mana\twi_mana\n") 
    for key in d1: 
    f.write('%s\t%s\t%s\n' %(key, d1[key]['Skill'], d1[key]['Magic'])) 

と私はこれだ:私はxlsxwriterモジュールを使用せずにwo_manawi_mana一部を書くことが出来るのですか

Name Skill Magic wo_mana wi_mana 
Ben true false 
Tom true true 

を?

注:入力ファイルからデータを抽出するとき

A)3つの辞書が作成され、キーと値を自分で定義されていない、ので、私はキーと値の順序を知りません辞書。

b).txtまたは.csvファイルに書き込んでください。このファイルは、タブで区切り文字としてExcelで開くことができます。

c)私はPython 2.7を使用しています。

+0

'csv'モジュールの使用についての感想は何ですか?それは間違いなく区切りを助けることができます(列間の区切り文字として '\ t 'を使用するように言えることがあります)。 – Delioth

+0

@Deliothはい私は許可を得ていないので、ダウンロードする必要がない限り、そうする。しかし、私の問題は、私は上記のようにテーブルのデータをプリントアウトする方法を知らないということです。 –

+0

私がダウン投票した理由は何ですか? –

答えて

1

正確な出力を得ることができませんでしたが、Excelで動作するものがあります。

あなたの3つの辞書にはそれぞれオブジェクト(または文字)に関する情報が含まれているので、辞書を使用するのではなく文字クラスを作成しました。

with open('output.csv', 'w') as f: 
    f.write('Name,Skill,Magic,wo_mana,wi_mana\n') 

    for c in characters: 
     wo_mana = [] 
     wi_mana = [] 

     for k, s in c.skills.items(): 
      if s[1] == 'wo_mana': 
       wo_mana.append('{} = {}'.format(k, s[0])) 
      elif s[1] == 'wi_mana': 
       wi_mana.append('{} = {}'.format(k, s[0])) 

     f.write('{},{},{},{},{}\n'.format(
      c.name, 
      str(c.skill), 
      str(c.magic), 
      '; '.join(wo_mana), 
      '; '.join(wi_mana) 
     )) 

は、おそらく行うには良い方法があります:(Excelはこれらを読む方法を知っている)

ben_skills = [ 
    ('Strength', 1.10, 'wo_mana'), 
    ('Speed', 1.50, 'wo_mana'), 
    ('Int', 1.20, 'wi_mana') 
] 
tom_skills = [ 
    ('Agility', 1.60, 'wo_mana'), 
    ('Int', 1.40, 'wi_mana') 
] 
characters = [ 
    Character('Ben', True, False, ben_skills), 
    Character('Tom', True, True, tom_skills) 
] 

し、CSVファイルに書き込む:

class Character(object): 
    def __init__(self, name, skill, magic, skill_list): 
     """ 
     Initialize the character. Skill and magic are boolean. 
     Skill list is a list of skill tuples. A skill tuple has 
     the format: (skill, value, mana) 
     """ 

     self.name = name 
     self.skill = skill 
     self.magic = magic 
     self.skills = {s[0]: (s[1], s[2]) for s in skill_list} 

次に、各キャラクターを作成この。 import csvを使用すると、改善される可能性があります(CSV hereについて読む)。

希望すると便利です。

+0

入力ファイルからデータを抽出するときに3つの辞書が作成されるため、キーと値を自分で定義することはできません(または文字クラスを作成することはできません)。申し訳ありませんが、十分な情報を提供していません。 –

関連する問題