Python3中的ASCii问题

时间:2019-08-26 19:39:38

标签: python-3.x ascii

我正在尝试将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)

但是它将每个字母视为自己的元素,并且不会将它们组合在一起,我只希望第一个数字前面的字母。

当数字转换为整数时,它会

1 个答案:

答案 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)