python - 使用 Python 提取数据包头
问题描述
我是 Python 和 stackoverflow 的新手,非常新。
我想提取目标端口:
2629 > 0 [SYN] Seq=0 Win=512 Len=100
0 > 2629 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
0 > 2633 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
我想检索每一行的目标端口:'0'、'2629'、'2633' 使用 python 正则表达式并忽略其余部分(出现在 '>' 之后和 '[' 之前的数字。
re.findall("\d\d\d\d\d|\d\d\d\d|\d\d\d|\d\d|\d", str)
但这是非常通用的。这种情况下最好的正则表达式是什么?
解决方案
对于这种特定情况,您可以在字符串上使用 split 函数。一个快速的实施将是:
dest_ports = []
lines = [
"2629 > 0 [SYN] Seq=0 Win=512 Len=100",
"0 > 2629 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0",
"0 > 2633 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0"
]
for line in lines:
dest_ports.append(line.split('> ')[1].split(' [')[0])
这将产生答案:
dest_ports = ['0', '2629', 2633']
推荐阅读
- typescript - 为什么我们在 TypeScript 中需要 @types
- sysadmin - 向 Windows 服务器发送重启(关机)命令的最佳方式是什么?
- python-3.x - 如何修复“模块'cv2'没有----成员pylint(无成员?
- ios - 如何配置多个 iOS URL Schemes
- entity-framework - Entity Framework Core 3:使用连接从多个源中提取数据
- java - Java - 匹配 3 个集合的标准以更新其中的 1 个
- c# - 在 Blazor 中使用 GetJsonAsync 无法捕获错误/响应,API 产生的 HTTP 响应为 204 'No Content'
- bash - 如何在for循环中为多个输入文件生成多个输出文件
- c++ - 为什么没有隐式调用基类的复制构造函数?
- python - 尝试读取在 Python 中创建的对象时访问冲突传递给 C++ 端的 std::vector 然后返回给 Python