You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Python生成的哈希值中仅提取数字部分

问题背景

开发需求为基于犬只基础信息生成哈希值存入数据库,在哈希值写入环节遇到数据类型不兼容问题,需要移除哈希值中的所有字母字符,仅保留数字内容。

现有实现代码
import hashlib
DogName = 'Dog'
DogID = '1'
Hash1 = DogName + DogID
Hash2 = Hash1.encode('utf-8')
out = hashlib.sha1(Hash2).hexdigest()
print(out)

运行上述代码生成的SHA1哈希值为:9ef8ed01647767afb5e0c4c45b4c373e73f795c1,需要提取其中的纯数字部分。

实现方案

SHA1的hexdigest()输出是由0-9数字、a-f小写字母组成的十六进制字符串,直接遍历字符串筛选出所有数字字符即可完成提取,该方法无兼容问题,可稳定生效:

import hashlib
DogName = 'Dog'
DogID = '1'
Hash1 = DogName + DogID
Hash2 = Hash1.encode('utf-8')
out = hashlib.sha1(Hash2).hexdigest()
# 筛选所有数字字符拼接
num_only_hash = ''.join(c for c in out if c.isdigit())
print(num_only_hash)

针对示例给出的哈希值,上述代码输出结果为:9801647767504454373737951

注意:仅提取数字的方案会丢失原哈希的部分字符信息,提升哈希碰撞概率。如果是因为数据库字段类型限制无法存储字符串类型的哈希值,更推荐使用无信息损失的整数转换方案,把十六进制哈希直接转为十进制整数存储,不会破坏原哈希的唯一性:

# 无信息损失的整数哈希存储方案
full_hash_int = int(out, 16)
print(full_hash_int)

内容的提问来源于stack exchange,提问作者Fumarasee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:03:28