【问题标题】:Check if line is a dictionary type and print the data?检查 line 是否是字典类型并打印数据?
【发布时间】:2017-09-18 14:51:28
【问题描述】:

我有 .txt 文件,它加载了很多文本,但在 2-3 段之间有一个像字典一样的文本:

somerandomtextinthisline
{"key1":"value1","key2":"value2"}
somerandomtextinthislineblasd
asbdjalsdnlasd
dasdjasdkjn
<space>

{"key1":"value1","key2":"value2"}
someranomtextaganinasdlasd
asdasd

所以我要做的是读取整个文件并从文件中获取所有'key2' 并将其粘贴到一个名为result.txt 的文件中。

如何编码?

【问题讨论】:

  • 这是一个家庭网站;请注意语言?
  • 看起来你可以尝试使用json.loads 解码每一行,如果它有效并且结果是字典,那么你就是金子。
  • 这是家庭网站,不是千里眼网站。

标签: python file dictionary python-2.x


【解决方案1】:

使用ast.literal_eval 将其转换为字典(如果可能)并检查是否可以使用'key2' 对解析的行进行索引:

import ast

with open(filename) as fin:
    for line in fin:
         try:
             parsed = ast.literal_eval(line)
             key2 = parsed['key2']
         except Exception:
             continue
         print(key2)  # I just print it here, you probably need to write it to another file instead

【讨论】:

    【解决方案2】:

    您可以使用正则表达式来匹配文件中的字典:

    import re
    import ast
    data = [i.strip('\n') for i in open('filename.txt')]
    final_dicts = list(map(ast.literal_eval, [re.sub("\s+", '', i) for i in data if re.findall('\{.*?:.*?,*\}', re.sub("\s+", '', i))]))
    

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 2021-01-22
      • 2013-07-02
      • 2019-05-26
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多