【发布时间】:2016-10-03 19:31:57
【问题描述】:
您好,我正在从事一个处理大量数据的项目。我有一个大约 2 GB 的带有键值对的文本文件,每个键都有多个值。 我需要提取不同文件中的所有密钥,因为我需要密钥来测试特定功能。
文件格式为:
:k: k1 :v: {XYZ:{id:"k1",score:0e0,tags:null},ABC:[{XYZ:{id:"k1",score:0e0,tags:null},PQR:[{id:"ID1",score:71.85e0,tags:[{color:"DARK"},{Type:"S1"},{color:"BLACK"}]},MetaData:{RuleId:"R3",Score:66.26327129015809e0,Quality:"GOOD"}},{XYZ:{id:"k1",score:0e0,tags:null},PQR:[..(same as above format)..],MetaData:{RuleId:"R3",Score:65.8234565409752e0,Quality:"GOOD"}} ::
//same pattern repeats with different keys, and a new line
当我使用 CTRL+F 在文件中搜索“:k:”时,这些键只会突出显示。所以我认为除了行首之外,这种模式在文件中没有任何位置
像这样有成千上万个键。
我希望将所有这些键 (k1, k2) 提取到单独的文件中进行测试。
:k: 有多行,并且想在单独的文件中分隔 (k1, k2, ..)。我该怎么做?
Python 也适合我。我可以在 python 中使用正则表达式,也可以使用“sed”shell 命令。请在这里帮助我如何使用这些来提取密钥。
有人能帮我写一个 shell/python 脚本吗?我知道它非常琐碎,但我对所有这些数据处理都是新手。
同样注重优化运行时间,因为数据非常大。
【问题讨论】:
-
我不会说那是非常微不足道的。你能提供一个文件的真实例子(没有
...) -
我已经更新了帖子!如果您还有其他想知道的,请告诉我!
-
所以您想为文件中的每个“第一个单词”(:k:) 创建一个单独的文件?
:k:有多行?如果是这样,您是否希望单独的文件包含所有:k:记录、第一条、最后一条或 ??? . (您的要求不清楚)。祝你好运。 -
是的,正确。 :k: 有多行,想在单独的文件中分隔 (k1, k2, ..)
标签: python bash shell pattern-matching data-processing