def replace_acronym(): # function not yet implemented
#FIND
for abbr, text in acronyms.items():
if abbr == acronym_edit.get():
textadd.insert(0,text)
#DELETE
name = acronym_edit.get().upper()
name.upper()
r =dict(acronyms)
del r[name]
with open('acronym_dict.py','w')as outfile:
outfile.write(str(r))
outfile.close() # uneccessary explicit closure since used with...
message ='{0} {1} {2} \n '.format('Removed', name,'with its text from the database.')
display.insert('0.0',message)
#ADD
abbr_in = acronym_edit.get()
text_in = add_expansion.get()
acronyms[abbr_in] = text_in
# write amended dictionary
with open('acronym_dict.py','w')as outfile:
outfile.write(str(acronyms))
outfile.close()
message ='{0} {1}:{2}{3}\n '.format('Modified entry', abbr_in,text_in, 'added')
display.insert('0.0',message)
我正在尝试添加在我的tkinter小部件中编辑字典条目的功能。字典的格式为{ACRONYM: text, ACRONYM2: text2...}
我认为该功能将实现的是在字典中查找条目,删除首字母缩略词及其相关文本,然后添加缩写和文本已更改的内容。例如,如果我有一个条目TEST: test
并且我想将其修改为TEXT: abc
该函数返回的内容是TEXT: testabc
- 尽管我已经添加了更改后的文本(我认为)覆盖了文件。
我做错了什么?
答案 0 :(得分:1)
这是一个非常混乱的外观功能。首字母缩略词替换本身可以很简单:
acronyms = {'SONAR': 'SOund Navigation And Ranging',
'HTML': 'HyperText Markup Language',
'CSS': 'Cascading Style Sheets',
'TEST': 'test',
'SCUBA': 'Self Contained Underwater Breathing Apparatus',
'RADAR': 'RAdio Detection And Ranging',
}
def replace_acronym(a_dict,check_for,replacement_key,replacement_text):
c = a_dict.get(check_for)
if c is not None:
del a_dict[check_for]
a_dict[replacement_key] = replacement_text
return a_dict
new_acronyms = replace_acronym(acronyms,'TEST','TEXT','abc')
这对我来说很完美(在Python 3中)。你可以在另一个将new_acronyms dict写入文件的函数中调用它,或者用它做任何你想做的事情,因为它不再只是被写入文件。