如何提取字符串中指定分隔符前的所有值并存入列表
字符串等号前字段提取方案
问题说明
待处理原始字符串:
asaa=tcp:192.168.40.1:1119 dsae=tcp:192.168.40.2:1115 dem=tcp:192.168.40.3:1117 ape=tcp:192.168.40.4:1116
目标:提取所有等号前的字段,输出规范列表:asaa、dsae、dem、ape
可直接运行的实现代码
Python 实现
方法1:原生字符串分割(无依赖,逻辑最直观)
核心逻辑:
- 先按空白字符拆分原字符串,得到多个
键=值格式的片段 - 每个片段按等号分割,取第一个元素即为目标字段
- 所有结果收集为列表
raw_str = "asaa=tcp:192.168.40.1:1119 dsae=tcp:192.168.40.2:1115 dem=tcp:192.168.40.3:1117 ape=tcp:192.168.40.4:1116" result = [item.split("=")[0] for item in raw_str.split()] print(result)
运行输出:
['asaa', 'dsae', 'dem', 'ape']
方法2:正则匹配(容错性更强)
适合原字符串存在多空格、换行、制表符分隔的不规则场景:
import re raw_str = "asaa=tcp:192.168.40.1:1119 dsae=tcp:192.168.40.2:1115 dem=tcp:192.168.40.3:1117 ape=tcp:192.168.40.4:1116" result = re.findall(r"([a-zA-Z]+)=", raw_str) print(result)
正则逻辑说明:匹配所有紧跟等号的连续字母序列,自动捕获等号前的目标内容,无需手动处理分隔符。
Shell 命令行实现
无需写脚本,一行命令直接出结果:
echo "asaa=tcp:192.168.40.1:1119 dsae=tcp:192.168.40.2:1115 dem=tcp:192.168.40.3:1117 ape=tcp:192.168.40.4:1116" | awk -v RS=' ' -F'=' '{print $1}'
内容的提问来源于stack exchange,提问作者MatteoB
相关产品推荐
相关产品推荐

