如何将 python 中的数字替换为白色 space

How can ı replace the number to white space in python

我在 phyton 中进行了加密解密工作,首先我将空格更改为随机数。为了完成这项工作,我使用此代码 a = [x for x in text] 将字符串转换为列表。我使用此代码替换了空格:

    for i in range(lenghtOfText):
        if ( a[i]==" "):
            a[i]=str((random.randint(0, 9)))

现在我需要再更改一次带有空格的数字。我试过了,但没用

    for i in range(lenghtOfText):
        if (a[i] in range(0,9)):
            a[i]=" "

我尝试了另一种方法来做到这一点。但它仍然不起作用。另一个代码是

    for i in range(lenghtOfText):
        if (a[i] == 0 or a[i] == 1 or a[i] == 2 or a[i] == 3 or a[i] == 4  or a[i] == 5 or a[i] == 6 or a[i] == 7 or a[i] == 8 or a[i] == 9 ):
            a[i]=" "

那是因为字符'1'(ascii 49)与数字1不一样。

试试这个:

for i in range(lenghtOfText):
    try:
        if (int(a[i]) in range(0,10)):
            a[i]=" "
    except:
        pass

注意:记住范围的结束是唯一的。

稍微好点的方法:

digits = [str(i) for i in range(10)]
for i in range(lenghtOfText):
    if a[i] in digits:
        a[i] = " "

更好:

for i in range(lenghtOfText):
    if a[i].isdigit():
        a[i] = " "

还有一个,这次使用 map:

a = list(map(lambda e: " " if e.isdigit() else e, a))

唯一需要注意的是,这将创建数组的副本,而原始数组保持不变。

您似乎将空格保存为字符串,但将它们查询为整数。试试 a[i] = "0" 等等。

它不起作用,因为您尝试将字符串与 int 值进行比较。

a[i]为字符串类型 range(0,9) 是具有 int 值的列表。

试试这个:

    for i in range(lenghtOfText):
       if (int(a[i]) in range(0,9)):
           a[i]=" "