如何合并相似字符串关联数值?许可证数量汇总方法咨询
嘿,这个需求其实挺常见的,给你几个超简单的办法,不需要复杂工具,直接就能处理记事本里的文本内容:
方法1:用Python脚本(最灵活,新手也能快速上手)
现在Windows系统大多自带Python,没有的话装起来也超简单。步骤如下:
- 把记事本里的许可证数据全选复制(比如你给的示例内容)
- 新建一个记事本文件,命名为
count_licenses.py,把下面的代码粘贴进去,记得把示例数据替换成你自己的:
# 替换成你实际的许可证数据 license_data = "1 第三方SIP设备席位、1 第三方SIP设备席位、1 第三方SIP设备席位、3 工作站、3 工作站、3 工作站、20 工作站" # 分割每一条许可证记录 license_items = license_data.split('、') total_counts = {} for item in license_items: # 分割数量和许可证名称(按第一个空格拆分,避免名称里有空格的情况) num_part, name = item.strip().split(' ', 1) num = int(num_part) # 累加数量 if name in total_counts: total_counts[name] += num else: total_counts[name] = num # 输出汇总结果 for license_name, total in total_counts.items(): print(f"{total} {license_name}")
- 保存后双击这个脚本,或者在命令行里运行
python count_licenses.py,就能直接得到你要的汇总结果啦。
方法2:用PowerShell(Windows系统自带,不用装额外软件)
如果你不想写脚本,直接用系统自带的PowerShell就能搞定:
- 复制记事本里的所有数据
- 打开PowerShell,粘贴下面的命令(把示例数据替换成你复制的内容):
$rawData = "1 第三方SIP设备席位、1 第三方SIP设备席位、1 第三方SIP设备席位、3 工作站、3 工作站、3 工作站、20 工作站" $records = $rawData -split '、' $sumTable = @{} foreach ($record in $records) { $count, $licenseName = $record.Trim() -split ' ', 2 $sumTable[$licenseName] += [int]$count } $sumTable.GetEnumerator() | ForEach-Object { "$($_.Value) $($_.Key)" }
- 按下回车,立刻就能看到汇总结果,直接复制出来用就行。
方法3:用Bash终端(Linux/macOS系统自带)
如果用的是Linux或者Mac,直接打开终端输入下面的命令(替换示例数据为你自己的):
echo "1 第三方SIP设备席位、1 第三方SIP设备席位、1 第三方SIP设备席位、3 工作站、3 工作站、3 工作站、20 工作站" | tr '、' '\n' | awk '{split($0, parts, " ", 2); totals[parts[2]] += parts[1]} END {for (type in totals) print totals[type], type}'
- 回车后马上就能得到汇总结果,全程不用打开任何额外软件。
这些方法都能完美处理空格分隔的文本,而且处理完的结果直接就是你要的格式,之后导入数据库也很方便。
内容的提问来源于stack exchange,提问作者Kevin Burris
相关产品推荐
相关产品推荐

