从变量中删除空格/逗号以添加到字符串

时间:2019-01-04 21:14:18

标签: python

我需要它看起来像

https://doorpasscode.kringlecastle.com/checkpass.php?i= (3333)&resourceId=77af125f-213f-4b2b-9e1e-ce156b6a838c

相反,它看起来像

https://doorpasscode.kringlecastle.com/checkpass.php?i= (3, 3, 3, 3)&resourceId=77af125f-213f-4b2b-9e1e-ce156b6a838c

代码:

for i in range(0, 4):
    for j in range(0, 4):
        for k in range(0, 4):
            for l in range(0, 4):
                trypass=(i,j,k,l)
                #print(i,j,k,l, sep='')
                print('https://doorpasscode.kringlecastle.com/checkpass.php?i= {}&resourceId=77af125f-213f-4b2b-9e1e-ce156b6a838c'.format(trypass).strip(','))

3 个答案:

答案 0 :(得分:1)

  1. strip仅从字符串的开头和结尾去除,而从中间不去除字符。
  2. 您的问题并没有真正消除,它是通过直接对tuple进行字符串化来添加不必要的垃圾。

要同时解决这两个问题,请将trypass转换为字符串,中间不添加任何连接符:

trypass = ''.join(map(str, (i,j,k,l)))

一个旁注:您可以使用itertools.product缩短很多时间,将四个循环变成一个(无箭头形代码),并避免将range元素转换为{{1 }}仅一次,无需中间命名变量即可直接生成str

trypass

答案 1 :(得分:0)

const将使用默认的元组格式化规则将元组格式化为字符串。 .format(trypass)。相反,您应该明确告诉它如何设置字符串格式,例如:

(3, 3, 3, 3)

答案 2 :(得分:0)

您有一个要简化为字符串的元组。

>>> trypass = (3,3,3,3)
>>> ''.join(str(i) for i in trypass)
'3333'

或者,因为您知道确切的4位数字,所以

print('https://doorpasscode.kringlecastle.com/checkpass.php?i={}{}{}{}&resourceId=77af125f-213f-4b2b-9e1e-ce156b6a838c'.format(*trypass))

或者,直接在4位数字上进行迭代。 itertools.product可以为您生成元组。

import itertools
for trypass in itertools.product("0123", repeat=4):
    print('https://doorpasscode.kringlecastle.com/checkpass.php?i={}{}{}{}&resourceId=77af125f-213f-4b2b-9e1e-ce156b6a838c'.format(*trypass))