簡體   English   中英

如何讀取元組的文本文件

[英]How to read a text file for tuples

我有一個表格的文本文件

plot:('neg', 0.4023264475292897)
derek:('pos', 0.5849625007211561)
is:('pos', 0.003209556475890097)
male:('pos', 0.49749965947081676)
model:('pos', 0.7004397181410923)

我正在嘗試將此文件加載到表單的字典中

{'plot':('neg', 0.4023264475292897), 'derek':('pos', 0.5849625007211561)}

鍵是字符串,元組是字符串,浮點數。 我試過在用冒號分割時使用 tuple(value) 但它不能正常工作,因為我不知道如何分隔其他字符所以元組包含文本文件中的每個空格和引號。就像這樣

def load_model(filepath):
dictionary = {}
with open(filepath, 'r') as textfile:
    for line in textfile:
        (key,value) = line.split(':')
        dictionary[key] = tuple(value)
return dictionary

它會顯示為“伙伴關系”:('(', "'", 'p', 'o', 's', "'", ',', ' ', '1', '.', '字典中的 0', ')', '\n') 不是 'partenrship': ('pos', 1.0)

任何幫助將不勝感激,謝謝!

由於值是簡單的元組,我會考慮使用內置的ast模塊並使用literal_eval()解析它們。

import ast

with open(path) as f:
    d = {}
    for line in f:
        key, value = line.split(':')
        d[key] = ast.literal_eval(value)

字典d將是:

{'plot': ('neg', 0.4023264475292897),
 'derek': ('pos', 0.5849625007211561),
 'is': ('pos', 0.003209556475890097),
 'male': ('pos', 0.49749965947081676),
 'model': ('pos', 0.7004397181410923)}

如果你被冒號分開,你會得到

x.split(':')[1] # ('key', val)

由於它們是作為文本閱讀的,因此您可以

1) Strip the leading and trailing brackets.
2) Split again on comma
3) Remove quotes on key, convert val to number
4) Pass both into a tuple.

這會幫助你進入for循環嗎?

for line in textfile:
    (key,value)=line.split(":")
    value2=value[1:-2].split(",")
    value2[0]=value2[0].replace("'","")
    value2[1]=float(value2[1])
    key=key.replace("'","")
    dictionary[key]=value

也許有更簡單的方法(實際上這里的一些命令可以鏈接起來),但這里已經過了午夜; 我能做的最好。 :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM