使用Python从多个文本文件中的多个字典中提取键值对

有趣的家伙

我在一个文件夹中有 300 多个文件,每个文件包含以下形式的 3000 多个字典:

{"vol":0.625,"view100":7732,"view50":7732,"view0":7732,"mView100":7732,"mView50":7732,"mView0":7732,"posTop":0,"posBottom":768,"posRight":1024,"posLeft":0,"audio":7732,"inView":1.0,"dur":15070,"full":true,"play":7732,"platform":"ias_i2","timestamp":1519693191,"gmMeasure":true,"gmm":4,"gdr":1,"impId":1861913361,"advId":13505389,"campId":2214346458,"grpId":4532473096,"creativeId":138222749951,"skip":false,"event":"fully_viewable_audible_half_duration_impression","auc":"r","pos":2,"ua":"com.google.ios.youtube/13.06.9 (iPad6,11; U; CPU iOS 11_2_1 like Mac OS X;en_US)","ip":"96.3.52.188","time":1519693200574,"sourceId":2,"channel":"tab","appServerName":"pm01.dal.303net.pvt","doNotTrack":false,"s2s":0}

{"vol":1.0,"view100":8055,"view50":8055,"view0":8055,"mView100":8055,"mView50":8055,"mView0":8055,"posTop":0,"posBottom":360,"posRight":640,"posLeft":0,"audio":8055,"inView":1.0,"dur":15000,"full":false,"play":8055,"platform":"ias_a2","timestamp":1519693191282,"gmMeasure":true,"gmm":4,"gdr":1,"impId":1087849849,"advId":13505389,"campId":2214346458,"grpId":4532473093,"creativeId":138222749951,"skip":false,"event":"fully_viewable_audible_half_duration_impression","auc":"r","pos":1,"ua":"com.google.android.youtube/13.05.52(Linux; U; Android 7.1.1; en_US; SM-J320V Build/NMF26X) gzip","ip":"50.80.2.228","time":1519693200589,"sourceId":2,"channel":"mob","appServerName":"pm01.dal.303net.pvt","doNotTrack":false,"s2s":0}

我需要提取一个特定的 K,V 对,可以说并将包含该对的整个字典存储在 python 的 txt 文件中。

这是我尝试过的:

people = [ {'name': "Tom", 'age': 10}, {'name': "Mark", 'age': 5}, {'name': "Pam", 'age': 7} ] 

def search(name):
    for p in people:
        if p['name'] == name:
            return p search("Pam")

有没有简单的方法来做到这一点?

塞尔吉·巴列斯塔

这里有两个不同的问题:

  • 如何处理 300 多个包含 json 字符串(而不是字典)的文本文件
  • 如何识别包含特定键值的字典(IES?)

fileinput模块可以解决第一部分,json 模块可以转换 Python dict 中的每一行,并且您已经拥有在 dict 中搜索键值对的代码。

所以假设filelist包含相关文件的路径(glob模块可以帮助构建它......):

for line in fileinput.fileinput(filelist):
    if len(line.strip()) != 0:       # skip eventual empty lines...
    cur = json.loads(line)
    if cur[key] == value:
        # line contains the text for the dictionary, cur contains the dictionary itself
        # fileinput.filename() contains the name of the file
        # fileinput.filelineno() is the current line
        # for example
        print("Found", key, "->", value, "in", fileinput.filename(),
            "at line", fileinput.filelineno(), ":\n", line)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用python从多个文本文件中提取数据

从python中的文本文件中提取多个模式(单个def函数)

从文本文件中提取多个匹配模式

如何从文本文件中提取多个圣经经文?

如何提取/更改文本文件中的行,该文本文件的数据分为多个字段?

如何使用 Python 将多个文本文件的内容提取到 Pandas 数据框中?

从多个文本文件中提取想要的单词(Python 3.6)

从文本文件中提取多个模式并将其保存到熊猫数据框[python]

从R中的多个文本文件中提取第一行

使用python从多个文本文件中绘制数据

如何避免将字典数据保存到文本文件,导致在保存的文本文件中创建多个字典

从python 3中的文本文件中提取数据

在 Python 中匹配和从文本文件中提取

从 Python 中的文本文件中提取句子

在 Python 中提取 JSON 文本文件中的值

从python中的文本文件中提取信息

使用Python从文本文件中提取数值

使用python从文本文件中提取数据

使用 python 从文本文件中提取特定行

使用python从文本文件中的特定模式中提取文本

Python:从字典中替换文本文件中的多个单词

如何在文本文件中的某个字符串之后从python中的文本文件中提取数据?

文本文件到一个嵌套的python字典中多个变量

使用 C 从文本文件中删除多个字符

使用python3中的tarfile模块从tar中提取文本文件

如何使用findall函数从python中的文本文件中提取特定的url

使用 Python PDFMiner 将多个 PDF 提取为文本文件的循环脚本

如何针对每个单独的文件名从多个文本文件中提取数据?

在 R 编程中使用模式和表达式从文本文件中提取多个数据帧