使用Python解析字符串数据并生成键值对映射

聖光之護
发布: 2025-10-04 08:48:08
原创
649人浏览过

使用python解析字符串数据并生成键值对映射

本文介绍如何使用Python解析特定格式的字符串数据,该数据包含以"55=id|1007=symbol"模式重复出现的键值对。我们将使用正则表达式提取id和symbol,并最终生成一个以symbol为键,id为值的字典,方便后续使用这些数据创建订单或其他操作。

使用正则表达式解析字符串

假设我们有如下格式的字符串数据:

55=22395|1007=BTCUSD|1008=3|55=22396|1007=BTCEUR|1008=2|55=22397|1007=ETHUSD|1008=3|55=22398|1007=ETHEUR|1008=3|55=20009|1007=TELENET GROUP|1008=2|55=20011|1007=MAGNEGAS CORP|1008=2|55=20012|1007=CALUMET SPEC PRDCTS|1008=2|55=20013|1007=CBOE HLDG INC|1008=2|55=20014|1007=ELECTRONIC ARTS INC|1008=2|55=20015|1007=EXPRESS SCRIPTS INC|1008=2|55=20016|1007=ADVANCE AUTO PARTS|1008=2|55=20017|1007=CHINA FUND INC|
登录后复制

我们的目标是提取出 "55" 对应的值 (id) 和 "1007" 对应的值 (symbol),并将它们关联起来。可以使用Python的re模块(正则表达式)来实现这个目标。

import re

s = """55=22395|1007=BTCUSD|1008=3|55=22396|1007=BTCEUR|1008=2|55=22397|1007=ETHUSD|1008=3|55=22398|1007=ETHEUR|1008=3|55=20009|1007=TELENET GROUP|1008=2|55=20011|1007=MAGNEGAS CORP|1008=2|55=20012|1007=CALUMET SPEC PRDCTS|1008=2|55=20013|1007=CBOE HLDG INC|1008=2|55=20014|1007=ELECTRONIC ARTS INC|1008=2|55=20015|1007=EXPRESS SCRIPTS INC|1008=2|55=20016|1007=ADVANCE AUTO PARTS|1008=2|55=20017|1007=CHINA FUND INC|"""

data = {}
for id_, symbol in re.findall(r"\b55=(\d+)\|\d+=([^|]+)", s):
    data[symbol] = id_

print(data)

# 输出:
# {'BTCUSD': '22395', 'BTCEUR': '22396', 'ETHUSD': '22397', 'ETHEUR': '22398', 'TELENET GROUP': '20009', 'MAGNEGAS CORP': '20011', 'CALUMET SPEC PRDCTS': '20012', 'CBOE HLDG INC': '20013', 'ELECTRONIC ARTS INC': '20014', 'EXPRESS SCRIPTS INC': '20015', 'ADVANCE AUTO PARTS': '20016', 'CHINA FUND INC': '20017'}
登录后复制

代码解释:

立即学习Python免费学习笔记(深入)”;

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人 44
查看详情 怪兽AI数字人
  1. import re: 导入Python的正则表达式模块。
  2. s: 包含要解析的字符串数据。
  3. re.findall(r"\b55=(\d+)\|\d+=([^|]+)", s): 这是核心部分。
    • re.findall() 函数用于在字符串 s 中查找所有匹配正则表达式的子字符串,并以列表形式返回。
    • r"\b55=(\d+)\|\d+=([^|]+)" 是正则表达式:
      • \b:匹配单词边界,确保 "55" 是一个独立的单词。
      • 55=:匹配字面字符串 "55="。
      • (\d+):匹配一个或多个数字,并将其捕获到第一个分组中。 \d 表示数字,+ 表示一个或多个。 这个分组对应于我们想要的 id。
      • \|:匹配字面字符 "|" (竖线)。 因为 "|" 在正则表达式中是特殊字符,所以需要用 \ 进行转义。
      • \d+=:匹配一个或多个数字,后跟 "="。 这部分匹配了 "1007=" 或 "1008=" 等。
      • ([^|]+):匹配除了 "|" 之外的任意字符,一个或多个,并将其捕获到第二个分组中。 [^|] 表示除了 "|" 之外的任意字符,+ 表示一个或多个。 这个分组对应于我们想要的 symbol。
  4. for id_, symbol in ...: 循环遍历 re.findall() 返回的列表,每次迭代都将匹配到的 id 和 symbol 赋值给变量 id_ 和 symbol。
  5. data[symbol] = id_: 创建一个字典,以 symbol 作为键,id_ 作为值。
  6. print(data): 打印最终生成的字典。

注意事项:

  • 确保输入字符串的格式与正则表达式匹配。如果格式略有不同,可能需要调整正则表达式。
  • 正则表达式的性能取决于字符串的复杂性和正则表达式本身的效率。对于非常大的字符串,可能需要考虑优化正则表达式或使用其他解析方法。

总结:

通过使用正则表达式,我们可以有效地从特定格式的字符串中提取所需的信息,并将其组织成易于使用的数据结构(例如字典)。 这在处理来自API或其他数据源的文本数据时非常有用。

以上就是使用Python解析字符串数据并生成键值对映射的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号