我有成千上万个包含多个JSON对象的文本文件,但不幸的是,对象之间没有分隔符.对象存储为字典,其中一些字段本身就是对象.每个对象可能具有可变数量的嵌套对象.具体来说,对象可能如下所示:
{field1: {}, field2: "some value", field3: {}, ...}
Run Code Online (Sandbox Code Playgroud)
并且在文本文件中没有分隔符的情况下连接数百个这样的对象.这意味着我既不能使用json.load()
也不能json.loads()
.
关于如何解决这个问题的任何建议.有没有一个已知的解析器来做到这一点?
使用Python字典时,我通常使用以下习语:
try:
val = dct[key]
except KeyError:
print key, " is not valid"
Run Code Online (Sandbox Code Playgroud)
因为对于大型词典而言
if key in dct:
# do something
Run Code Online (Sandbox Code Playgroud)
效率不高(所以我记得读书,但我在实践中也注意到了)
今天我正在使用defaultdict,有一会儿我忘记了defaultdict永远不会给你一个KeyError,而是会更新原始字典.
如何在不更新defaultdict的情况下执行查找?我真的需要打印一个错误,以便用户可以重新输入密钥.
谢谢!
更新:几张海报表明我的信念if key in dct:
很慢是错误的.我回去检查了我读过的最好用的书try: except:
.它是2002年的Python Cookbook,Alex Martelli的Recipe 1.4,也可以在这里找到:在词典中添加一个条目.旧的记忆是如此不可靠!配方中没有提到"慢",它甚至没有使用in
,但has_key
.它只是说它try: except:
更像Pythonic(至少是配方的书籍版本).感谢您的纠正和答案.
我有以下HTML代码:
<input type="checkbox" value="1" />
<input type="checkbox" value="2" />
...
<input type="checkbox" value="30" />
Run Code Online (Sandbox Code Playgroud)
并且用户已经检查过上次访问中的一些框,并且这些值存储在变量中(从服务器获取其值):
myChoices = ["1", "5", "12"]
Run Code Online (Sandbox Code Playgroud)
很容易检查myChoices中具有值的所有复选框,可以通过以下方式完成:
$.(':checkbox').val(myChoices)
Run Code Online (Sandbox Code Playgroud)
但我想检查并禁用这些框.我确实有如下解决方案:
$(':checkbox').each(function()
{if ($.inArray(this.value, myChoices) != -1)
{this.checked=true; this.disabled=true;}
})
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我只是想知道是否有一个更简单的解决方案,类似于val(),这是如此优雅.
谢谢.
这是一个能够理解Java和Python之间差异的理论问题.要使用Java将文件内容读入数组,您需要知道行数,以便在声明数组时定义数组的大小.而且因为你事先无法知道,你需要运用一些技巧来克服这个问题.
但是在Python中,列表可以是任何大小,因此将文件内容读入列表可以按以下方式完成:
lines = open('filename').read().split('\n')
Run Code Online (Sandbox Code Playgroud)
要么
lines = open('filename').readlines()
Run Code Online (Sandbox Code Playgroud)
split('\n')如何在这个场合工作?Python实现是否也在下面执行某些技巧(例如在需要时将数组大小加倍等)?
任何有关这方面的信息都将非常感激.
我有一个简单的模型:
class MyEntry(db.Model):
keyName = db.StringProperty()
valuesList = db.StringListProperty()
Run Code Online (Sandbox Code Playgroud)
我想从文件中填充大约7000个此实体实例的数据存储区.(我有一个从文件中读取的函数,创建实体并将它们放到db中)
我正在使用SDK控制台中的交互式控制台来执行导出(或更好的实例化).但是,即使我尝试以400的批量导出实例,在创建1000个实例后,数据存储也会停止接受新实例.我不认为这是一个超时问题,因为我故意小批量做事(在我一次性尝试所有事情之后).
这是一个已知的问题吗?我无法找到任何记录此信息的信息.是否有其他方法将数据导出到本地数据存储区?
谢谢.
python ×4
checkbox ×1
datastore ×1
defaultdict ×1
dictionary ×1
jquery ×1
json ×1
object ×1
split ×1