Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将逗号分隔的字符串转换为列表_Python_Django - Fatal编程技术网

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

Python 将逗号分隔的字符串转换为列表,python,django,Python,Django,我想在模型中将整数列表存储为字段。由于Django中默认情况下没有为此提供字段,因此我使用名为x的CommaseParatedIntegraterField来完成此操作。在我看来,然后我获取这个字符串并从中创建一个整数列表。当使用参数n创建模型实例时,我希望x设置为lengthn,每个元素都设置为零 模型如下: class Foo(models.Model): id = models.IntegerField(default = 0) x = models.CommaSepara

我想在模型中将整数列表存储为字段。由于Django中默认情况下没有为此提供字段,因此我使用名为
x
的CommaseParatedIntegraterField来完成此操作。在我看来,然后我获取这个字符串并从中创建一个整数列表。当使用参数
n
创建模型实例时,我希望
x
设置为length
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]
。如何实现所需的输出?

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

此外,如果需要整数而不是子字符串,则需要进行转换

最后,因为后面有逗号,所以需要从拆分中筛选空结果

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

不知道为什么会发生这种情况,但如果我猜的话,您正在执行
.split()。但请您解释一下data.split(',')中x的
[int(x)的语法,如果x]
?如果x
是什么意思?它们被称为这听起来可能是多余的,但是
如果x
将检查x是否为
。本例中的x是一个字符串,Python中的字符串为空时为
False
,否则为
True
。@RJT-这不完全正确<代码>如果x正在查找真值。基本上,它确实
bool(x)=True
——在本例中,非空字符串的真值为
True
——因此它是完全有效的。这是必需的,因为字符串以
结尾,您不能执行
int(None)
,这就是我的意思,但我简化了太多。谢谢你更清楚的回答。
values = map(int, '0,1,2,3,'.rstrip(',').split(','))