如何在Ruby中将数组元素拆分为独立的键值对?
拆分键值对数组的实现方案
你需要处理的数组每个元素都是键: 值格式的字符串,目标是遍历数组并分别提取出每个元素的键和值。示例数组如下:
array = ["Image loaded:", "RuleName: xx", "UtcTime: xxx", "ProcessGuid: {xxx}", "ProcessId: 884", "Image: C:\\opt\\td-agent\\bin\\ruby.exe", "ImageLoaded: xxx", "FileVersion: -", "Description: -", "Product: -", "Company: -", "OriginalFileName: -", "Hashes: MD5=xxx", "Signed: false", "Signature: -", "SignatureStatus: Unavailable", "User: xx"]
实现思路
遍历数组中的每个元素,以: (冒号加空格)作为分隔符拆分字符串,限制拆分次数为1——这样能避免值中包含冒号(比如示例里的文件路径、Hashes字段)时被错误拆分。同时处理无值的特殊项(如Image loaded:)。
代码实现(Python)
array = ["Image loaded:", "RuleName: xx", "UtcTime: xxx", "ProcessGuid: {xxx}", "ProcessId: 884", "Image: C:\\opt\\td-agent\\bin\\ruby.exe", "ImageLoaded: xxx", "FileVersion: -", "Description: -", "Product: -", "Company: -", "OriginalFileName: -", "Hashes: MD5=xxx", "Signed: false", "Signature: -", "SignatureStatus: Unavailable", "User: xx"] for item in array: if ": " in item: # 只拆分一次,保留值中的特殊字符 key, value = item.split(": ", 1) else: # 处理无值的项,去掉末尾冒号作为键 key = item.rstrip(":") value = "" print(f"键: {key}") print(f"值: {value}")
输出示例片段
键: Image loaded 值: 键: RuleName 值: xx 键: UtcTime 值: xxx 键: Image 值: C:\opt\td-agent\bin\ruby.exe
内容的提问来源于stack exchange,提问作者ryan corner
相关产品推荐
相关产品推荐

