2015-12-14 39 views
-1

file_name.txt包含我怎樣才能將密鑰,值格式更改回行?

{'email1234': 'OK', 'email03': 'SPAM', 'email02': 'OK', 'email01': 'OK'} 

我的代碼

def write_classification_to_file(fpath1,fpath2): 

    f = open('file_name.txt', "r") 
    xs = f.readlines() 




    g = open('file_write.txt', "w") 
    for v in xs: 
    g.write(v) 
    return g 

我試圖寫在FILENAME.TXT文本file_write.txt但通過移除file_name.txt的鑰匙,和值和加盟一起到目前爲止,我設法它打印,但一樣file_name.txt我得到

在file_write.txt

預期輸入

email01 OK 
email02 OK 
email03 SPAM 
email1234 OK 
+2

澄清你想要的。有一個名爲file1和一個字典文件1的文件很混亂。你想要的輸出是什麼,你的輸入是什麼? – Randrian

+0

我剛剛編輯我的帖子 – loco

+0

iam對不起,我的錯誤,我的意思是他們是相同的 – loco

回答

3

的文件似乎並沒有嚴格的JSON格式,但ast.literal_eval將處理Python字典語法:

import ast 
with open('file_name.txt') as f: 
    D = ast.literal_eval(f.read()) 
with open('file_write.txt','w') as f: 
    for k,v in D.items(): 
     f.write('{} {}\n'.format(k,v)) 

輸出:

email02 OK 
email1234 OK 
email03 SPAM 
email01 OK 

您可以使用for k,v in sorted(D.items()):如果關鍵訂購事宜。

+0

出於好奇,它的哪部分不是嚴格的json格式?單引號而不是雙引號? –

+1

@TomDalton我認爲json.loads()只適用於帶雙引號的字符串。'{'email1234':'確定','email03':'垃圾郵件','email02':'確定','email01':'確定'}'不起作用,但'{「email1234」:「確定」,「 email03「:」垃圾郵件「,」email02「:」確定「,」email01「:」確定「}'做過 ' – Termi

+1

@TomDalton,'json.load'在單引號中失敗。 –

1

你在找什麼可能是json解碼。

import json 
def write_classification_to_file(file_name_in, file_name_out): 
    with open('file_name.txt', "r") as f_in: 
     xs = json.loads(f_in.read()) 
    with open('file_write.txt', "w") as f_out: 
     for key in sorted(xs.keys()): 
      f_out.write("{} {}\n".format(key, xs[key])) 
+0

這隻會將'xs'的鍵寫入文件。 OP說,關鍵以及價值是理想的。您還將返回文件對象,我不確定這是個好主意,甚至是想要的。 – IanAuld

+0

嗯,我寫'g.write(v)'和'g.write(xs [v])'應該已經寫入了兩者。 – Randrian

+0

我的錯誤,我沒有注意到,因爲你正在以非常不尋常的方式進行。將會更容易使用'for key,value in xs.items()'然後就是'{} {}'。format(key,value)' – IanAuld