我有这个 string 变量
auxi_espec = '1, 3, 5, 7,'
我需要将其转换为数组,以便创建一个查询集,并在其中使用__in
进行过滤。 (可能我想我也需要切最后一个逗号)。
答案 0 :(得分:1)
您需要使用split()
函数:
>>> auxi_espec = '1, 3, 5, 7,'
>>> auxi_espec_lst = [x.strip() for x in auxi_espec.split(',')][:-1]
>>> auxi_espec_lst
['1', '3', '5', '7']
如果要将这些数字解析为整数:
>>> auxi_espec = '1, 3, 5, 7,'
>>> auxi_espec_lst = [int(x.strip()) for x in auxi_espec.split(',') if x]
>>> auxi_espec_lst
[1, 3, 5, 7]
答案 1 :(得分:0)
Django在in
查找中接受了许多iterables,因此,如果您提到的字符串格式设置为石头,那么这种分割就足够了,就像字符串列表一样。
ids = auxi_espec[0:-1].split(', ') # ['1', '3', '5', '7']
instances = MyModel.objects.filter(id__in=ids)
答案 2 :(得分:0)
使用正则表达式,它们很棒:
>>> import re
>>> auxi_espec = '1, 3, 5, 7,'
>>> indices = re.findall(r'(\d+)', auxi_espec)
>>> indices
['1', '3', '5', '7']
>>> [int(i) for i in indices]
[1, 3, 5, 7]