Django:将字符串转换为数组

时间:2019-03-21 23:00:12

标签: python arrays django string parsing

我有这个 string 变量

auxi_espec = '1, 3, 5, 7,'

我需要将其转换为数组,以便创建一个查询集,并在其中使用__in进行过滤。 (可能我想我也需要切最后一个逗号)。

3 个答案:

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