将逗号分隔的字符串转换为列表

时间:2014-07-03 14:35:20

标签: python django

我想将整数列表存储为模型中的字段。由于Django默认没有为此提供字段,因此我使用名为x的CommaSeparatedIntegerField进行此操作。在我看来,然后我接受这个字符串并从中创建一个整数列表。使用参数n创建模型实例时,我希望将x设置为长度n,并将每个元素设置为零。

以下是模型:

class Foo(models.Model):
    id = models.IntegerField(default = 0)
    x = models.CommaSeparatedIntegerField(max_length = 10)

@classmethod
def create(cls, _id, n):
    user = cls(id = _id)
    user.class_num_shown = '0,' * n

然后我创建一个实例:

f = Foo.create(1, 4)
f.save()

从数据库加载它并将字符串转换为列表:

f = Foo.objects.get(id = 1)
x_string = f.x
x_list = x_string.split(',')
print x_list

但这会输出[u'0,0,0,0,']而不是我想要的,[0,0,0,0]。如何实现我想要的输出?

2 个答案:

答案 0 :(得分:5)

split()的separator参数不是要拆分的不同字符的列表,而是整个分隔符。您的代码只会拆分“逗号空间”。

此外,如果你想要整数而不是子串,你需要进行转换。

最后,因为您有一个尾随逗号,您需要从拆分中过滤掉空结果。

>>> data = '0,0,0,0,'
>>> values = [int(x) for x in data.split(',') if x]
>>> values
[0, 0, 0, 0]

答案 1 :(得分:4)

values = map(int, '0,1,2,3,'.rstrip(',').split(','))