我正在尝试将varchar字符串转换为ascii。然后我正在尝试使其不为3位数字的任何数字都在其前面为0。然后我尝试在字符串的开头添加1,然后尝试将其设置为较大的数字,以便可以对其应用数学运算。
我尝试了很多不同的编码技术。我最接近的是:
s = 'Ak'
for c in s:
mgk = (''.join(str(ord(c)) for c in s))
num = [mgk]
var = 1
num.insert(0, var)
mgc = lambda num: int(''.join(str(i) for i in num))
num = mgc(num)
print(num)
使用此代码,我得到输出:165107
它几乎完全在做我需要做的事情,但是它从ord(A)中取出0(即65)。我希望它是165。其他所有东西似乎都工作得很好。我正在使用'%03d'%插入0。
我希望它如何工作:
从一串数字和字母中获取ord()值。
如果ord()值小于100(例如:A = 65,请添加0使其成为3位数字)
采用ord()值并将其组合为1个数字。 0必须停留在65之内。然后在列表中添加1。所以基本上输出将如下所示:
1065107
我想确保我可以接受该数字并对其应用数学。
我也有以下代码:
s = 'Ak'
for c in s:
s = ord(c)
s = '%03d'%s
mgk = (''.join(str(s)))
s = [mgk]
var = 1
s.insert(0, var)
mgc = lambda s: int(''.join(str(i) for i in s))
s = mgc(s)
print(s)
但是它将每个字母视为自己的元素,并且不会将它们组合在一起,我只希望第一个数字前面的字母。
当数字转换为整数时,它会
答案 0 :(得分:0)
这是您想要的吗?我有点困惑:
a = 'Ak'
result = '1' + ''.join(str(f'{ord(char):03d}') for char in a)
print(result) # 1065107
# to make it a number just do:
my_int = int(result)