2016-05-05 214 views
1

這是我在我的data.txt文件如何從python中的多個字典中獲取一個鍵的值?

{"setup": "test", "punchline": "ok", "numOfRatings": 0, "sumOfRatings": 0}, 
{"setup": "test2", "punchline": "ok2", "numOfRatings": 0, "sumOfRatings": 0} 

數據如何將能夠在使用循環的 字典每setup只得到數據?

感謝

+0

您是否嘗試過的東西沒有? – AKS

+0

這是JSON格式的數據嗎?它看起來像。如果是這樣,你有沒有嘗試過使用['json'](https://docs.python.org/3/library/json.html)模塊?如果它不起作用,錯誤信息或問題是什麼?展示迄今爲止您嘗試的內容有助於讀者瞭解您需要什麼類型的指導。 – dimo414

回答

1

我不知道你是怎麼得到的字典到擺在首位的文本文件,但如果它能夠丟棄尾隨逗號,即

{"setup": "test", "punchline": "ok", "numOfRatings": 0, "sumOfRatings": 0} 
{"setup": "test2", "punchline": "ok2", "numOfRatings": 0, "sumOfRatings": 0} 

喜歡的東西此代碼,你需要把前夕之後

def dicts_from_file(file): 
    dicts_from_file = [] 
    with open(file,'r') as inf: 
     for line in inf: 
      dicts_from_file.append(eval(line)) 
    return dicts_from_file 

def get_setups(dicts): 
    setups = [] 
    for dict in dicts: 
     for key in dict: 
      if key == "setup": 
       setups.append(dict[key]) 
    return setups 

print get_setups(dicts_from_file("data.txt")) 
1
f = open('data') 
    for line in f: 
     d = ast.literal_eval(line)[0] 
     print d['setup'] 

「」:這可能會爲你工作ry行,因爲ast.literal_eval(行)將行轉換爲元組。

,如果你不是每個字典後有做「」,然後用這個

f = open('data') 
for line in f: 
    d = ast.literal_eval(line) 
    print d['setup'] 
1

你可以試試這個,如果你的文件中的線是標準的字典字符串。

def get_setup_from_file(file_name): 
    result = [] 
    f = open(file_name, "r") 
    for line in f.xreadlines(): 
     # or line_dict = json.loads(line) 
     line_dict = eval(line) # if line end witch ',', try eval(line[0:-1]) 
     result.append(line_dict["setup"]) 
    return result 

希望這能幫助你。

1

,如果它是標準的字典字符串,試試這個:

with open(file,'r') as file_input: 
    for line in file_input: 
     print eval(line).get("setup") 
相關問題