1

我正在使用 Python 处理大型文本文件。文件的每一行都是一个完整的 JSON 消息,并且可能很长。我需要将有关每一行的信息插入到数据库中。此信息非常简单:行的长度加上每条消息包含的唯一 ID。所以每一行都有形式

{"field1":"val1", ..., "ID":"12345", ..., "fieldK":"valK"}

我需要从消息中提取“12345”。

现在我加载整个字符串,json.loads()然后找到 ID 并忽略其余部分。

我的代码太慢了,我需要加快速度。我想看看是否有一种方法可以比加载整个字符串更快地提取“ID”。一种选择是在字符串中搜索“ID”,然后处理:"12345". 但是如果碰巧在消息的其他地方有一个子字符串“ID”,它可能会很脆弱。

那么有没有办法以某种方式部分加载行来查找 ID,这与加载整行一样健壮,但也比加载整行更快?

4

1 回答 1

0

我会推荐几个路径:

如果您的输入非常大,则可能将其全部加载到内存中是浪费的。单独加载/解析每一行可能会更快。

如果上述方法没有帮助,那么设计一些方法来在文件中搜索正确的 ID 并不是一个坏主意。当您真正找到正确的数字时,只需验证输入是否符合犹太教规ID:。所以你应该:

  1. 搜索(正则表达式或其他)您期望的 ID。
  2. 对于匹配,实际解析该行并确保它有效。如果不是(例如,只是ID:嵌入在某个字符串中),请将其删除并继续搜索。

由于 (2) 的不合法出现应该很少见,因此验证不必非常有效。

于 2013-01-28T01:31:03.580 回答