
本文将介绍如何使用 Python 的 re 模块,通过正则表达式从特定格式的字符串中提取数据,并将其转换成需要的键值对形式。
假设我们有一个字符串,其中包含类似 55=id|1007=symbol 这样的模式,我们的目标是提取 symbol 和 id,并将它们转换成 symbol = id 的形式。
首先,我们需要导入 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|"""
接下来,使用 re.findall() 函数和正则表达式来提取数据。正则表达式 r"\b55=(\d+)\|\d+=([^|]+)" 的含义如下:
for id_, symbol in re.findall(r"\b55=(\d+)\|\d+=([^|]+)", s):
print(f"{symbol:<30} {id_}")这段代码会遍历所有匹配项,并将 id 和 symbol 分别赋值给变量 id_ 和 symbol。然后,使用 f-string 打印结果,{symbol:<30} 表示将 symbol 左对齐,并占据 30 个字符的宽度,方便对齐输出。
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|"""
for id_, symbol in re.findall(r"\b55=(\d+)\|\d+=([^|]+)", s):
print(f"{symbol:<30} {id_}")运行上述代码,将会得到如下输出:
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 的 re 模块,通过正则表达式从特定格式的字符串中提取数据。这种方法在处理大量文本数据时非常有用,可以帮助您快速地提取所需的信息。掌握正则表达式的编写和使用,能够显著提高数据处理的效率。
以上就是使用正则表达式解析并提取特定格式的字符串数据的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号