我正在尝试制作一个程序,该程序使用文本文件的内容并将其用作字典。
当我输入这段代码时;
A=open("dic.txt","r")
print(A.read())
if "A" in A:
print("spam")
else:
print("eggs")
我得到以下输出:
{"A":1}
eggs
我想要的是这个
{"A":1}
spam
关于如何做到这一点的任何想法?我不明白为什么它不起作用。
这些是文本文件的内容:
{"A":1}
答案 0 :(得分:3)
有效版本可能是:
09-18 01:39:49.631 18508-18803/? E/AndroidRuntime: FATAL EXCEPTION: Thread-5
Process: ma.ac.iav.myapplication, PID: 18508
java.lang.InternalError: Thread starting during runtime shutdown
at java.lang.Thread.nativeCreate(Native Method)
at java.lang.Thread.start(Thread.java:733)
at android.app.SharedPreferencesImpl.startLoadFromDisk(SharedPreferencesImpl.java:119)
at android.app.SharedPreferencesImpl.<init>(SharedPreferencesImpl.java:112)
at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:392)
at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:373)
at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:167)
at cat.ereza.customactivityoncrash.CustomActivityOnCrash.getLastCrashTimestamp(CustomActivityOnCrash.java:673)
at cat.ereza.customactivityoncrash.CustomActivityOnCrash.hasCrashedInTheLastSeconds(CustomActivityOnCrash.java:683)
at cat.ereza.customactivityoncrash.CustomActivityOnCrash.access$200(CustomActivityOnCrash.java:52)
at cat.ereza.customactivityoncrash.CustomActivityOnCrash$1.uncaughtException(CustomActivityOnCrash.java:112)
at org.acra.builder.ReportExecutor.endApplication(ReportExecutor.java:269)
at org.acra.builder.ReportExecutor.dialogAndEnd(ReportExecutor.java:254)
at org.acra.builder.ReportExecutor.access$400(ReportExecutor.java:42)
at org.acra.builder.ReportExecutor$2.run(ReportExecutor.java:217)
答案 1 :(得分:-2)
您当前的代码有一些问题:
read()
方法返回字符串,而不是字典要解决此问题,您可以 使用Python内置的eval
来解析字符串中的字典,但这可能很危险且不可靠。
此外,您还可以通过“扩展”代码来解决类似的未来问题,这意味着通过使用清晰的变量名和良好的间距使代码更易于阅读,从而易于调试:
file = open("dic.txt", "r")
contents = file.read()
dictionary = eval(contents) # VERY dangerous
if "key" in A:
print("key is in dictionary! :)")
else:
print("key is not in dictionary! :(")
file.close()
希望这会有所帮助!
编辑:与该线程上的其他张贴者一样,我也认为eval
很少应使用,但在我看来,这似乎是针对此特定问题的最简单解决方案。我不建议将eval
用于类似这样的其他问题,除非您确切地知道您在做什么。其他使用literal_eval
的解决方案可能比这个更好(它们甚至在我的发布之前);我只是在描绘另一个可能很有趣的解决方案。向任何被误导的人和任何被冒犯的Pythoner致歉。