我编写了代码,将json响应附加到我正在执行的某些API工作的列表中,但是它在我想要的字母数字值周围存储了单引号。我想摆脱单引号。这是我到目前为止的内容:
i = 0
deviceID = []
while i < deviceCount:
deviceID.append(devicesRanOn['resources'][i])
deviceID[i] = re.sub('[\W_]', '', deviceID[i])
i += 1
if i >= deviceCount:
break
if (deviceCount == 1):
print ('Device ID: ', deviceID)
elif (deviceCount > 1):
print ('Device IDs: ', deviceID)
所需的输入应如下所示:
input Device IDs:
['14*************************00b29', '58*************************c3df4']
Output:
['14*************************00b29', '58*************************c3df4']
Desired Output:
[14*************************00b29, 58*************************c3df4]
如您所见,我正在尝试使用RegEx过滤非字母数字并将其替换为空。它并没有给我一个错误,也没有在执行我要寻找的动作。有没有人建议如何解决此问题?
谢谢你, xOm3ga
答案 0 :(得分:0)
您将无法使用默认打印。您将需要使用自己的方法来表示列表。但这很容易进行字符串格式化。
'[' + ', '.join(f'{id!s}' for id in ids) + ']'
f'{id:!s}
是一个f字符串,它使用id
方法格式化变量__str__
。如果您使用的是3.6之前的版本而不使用f字符串,则也可以使用
'%s' % id
'{!s}'.format(id)
PS:
通过使用列表理解和自定义格式而不是正则表达式,可以大大简化代码。
ids = [device for device in devicesRanOn['resources'][:deviceCount]]
if deviceCount == 1:
label = 'Device ID:'
elif deviceCount > 1:
label = 'Device IDs:'
print(label, '[' + ', '.join(f'{id!s}' for id in ids) + ']')