You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从类字典格式文件中提取指定键值对(如foo:1234)?

提取类字典格式中的指定键值对

没问题!针对你遇到的这种混合格式(键带双引号/不带双引号)的类字典文本提取需求,我给你几个实用的方案,不管是用脚本还是命令行都能轻松搞定:

方法1:正则表达式(通用型,多场景适用)

正则是处理这类半结构化文本的利器,不管你用Python、JavaScript还是命令行工具,都能快速适配。针对提取foo对应的键值对,我们可以写一个能匹配两种键格式的正则:

(?:"foo"|foo):\d+

规则解释

  • (?:"foo"|foo):同时匹配带双引号的"foo"和不带引号的foo
  • :\d+:匹配冒号后面的数字值(如果你的值可能是字符串、小数等,可以把\d+改成\S+或者更精准的匹配规则,比如"[^"]+"匹配带引号的字符串)

实际使用例子

  • 命令行grep(假设文本存在file.txt中):
grep -oP '(?:"foo"|foo):\d+' file.txt
  • Python脚本:
import re

# 示例文本,包含两种格式
sample_text = '''"foo":1234,"bar":123
foo:5678,bar:9012'''

# 提取所有匹配的键值对
matches = re.findall(r'(?:"foo"|foo):\d+', sample_text)
for item in matches:
    print(item)
# 输出结果:
# "foo":1234
# foo:5678

方法2:Python 严谨解析法(适合复杂值场景)

如果你的文本里的值不只是数字,还有字符串、嵌套结构这类复杂内容,正则就容易失效了。这时候可以用支持非标准JSON的库(比如json5)把文本解析成真正的字典,再提取键值,更稳妥。

首先安装依赖:

pip install json5

然后编写脚本:

import json5

# 处理带引号键的文本
text_with_quotes = '"foo":1234,"bar":123'
# 给文本包裹大括号,变成合法的JSON5格式
parsed_dict1 = json5.loads(f'{{{text_with_quotes}}}')
print(f'foo:{parsed_dict1["foo"]}')  # 输出:foo:1234

# 处理不带引号键的文本
text_no_quotes = 'foo:5678,bar:9012'
parsed_dict2 = json5.loads(f'{{{text_no_quotes}}}')
print(f'foo:{parsed_dict2["foo"]}')  # 输出:foo:5678

方法3:命令行awk工具(终端快速处理)

如果你习惯在Linux/macOS终端处理文本文件,awk工具也能高效完成提取:

awk -F ',' '{for(i=1;i<=NF;i++){if($i ~ /^("foo"|foo):/){print $i}}}' file.txt

逻辑说明

  • -F ',':把逗号作为字段分隔符
  • 遍历每个分隔后的字段,判断字段是否以"foo":或foo:开头,符合条件就打印该字段

内容的提问来源于stack exchange,提问作者Jose Campos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:31:43