提取正则表达式格式字符串数据
本文介绍如何使用Python的正则表达式模块re,从包含特定模式(如55=id|1007=symbol)的字符串中提取数据,并将其转换为symbol=id的形式。通过示例代码,详细讲解了正则表达式的编写和使用方法,帮助读者高效地解析和处理类似格式的数据。

本文将介绍如何使用 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+=([^|]+)" 的含义如下:
- \b: 匹配单词边界,确保匹配的是完整的 55=。
- 55=: 匹配字符串 "55="。
- (\d+): 匹配一个或多个数字,并将其捕获到第一个分组中(id)。
- \|: 匹配字符 "|"。
- \d+=: 匹配一个或多个数字后跟 "="。
- ([^|]+): 匹配除了 "|" 之外的一个或多个字符,并将其捕获到第二个分组中(symbol)。
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
注意事项
- 正则表达式的编写需要根据实际的数据格式进行调整。
- 使用 re.findall() 函数返回的是一个列表,其中每个元素都是一个元组,包含所有捕获的分组。
- 可以使用 re.search() 函数来查找第一个匹配项。
- 可以使用 re.sub() 函数来替换字符串中的匹配项。
总结
通过本文的介绍,您学会了如何使用 Python 的 re 模块,通过正则表达式从特定格式的字符串中提取数据。这种方法在处理大量文本数据时非常有用,可以帮助您快速地提取所需的信息。掌握正则表达式的编写和使用,能够显著提高数据处理的效率。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















