将逗号分隔字符串转换为列表
我想在我的模型中存储一个整数列表。因为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 个回答
4
在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够清晰,或者是我们对某些概念理解得不够透彻。这些问题可能会让我们感到困惑,尤其是对于刚开始学习编程的小伙伴们来说。
比如,有些人可能会在使用某个工具或库的时候,遇到错误提示,或者发现代码没有按照预期的方式运行。这时候,我们需要仔细检查代码,看看是不是哪里出错了,或者是不是对这个工具的用法理解不够。
总之,编程就像是解决谜题一样,需要耐心和细心。遇到问题时,不要急于放弃,可以尝试查阅资料,或者向其他人请教,慢慢就能找到解决办法。
values = map(int, '0,1,2,3,'.rstrip(',').split(','))
5
在使用split()函数时,分隔符的参数不是一个不同字符的列表,而是整个分隔符。也就是说,你的代码只会把“逗号加空格”这个组合拆开。
另外,如果你想要的是整数而不是字符串,你需要把它们转换成整数。
最后,由于你有一个多余的逗号,所以在拆分后需要去掉那些空的结果。
>>> data = '0,0,0,0,'
>>> values = [int(x) for x in data.split(',') if x]
>>> values
[0, 0, 0, 0]