将逗号分隔的字符串转换为列表 [英] Converting comma-separated string to list

查看:103
本文介绍了将逗号分隔的字符串转换为列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to store a list of integers as a field in my model. As there is no field provided for this by default in Django, I am doing it by using a CommaSeparatedIntegerField called x. In my view, I then take this string and create a list of integers from it. When a model instance is created with parameter n, I want x to be set to length n, with each element being set to zero.

这里是模型:

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()

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

And load it from the database and convert the string into a list:

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] 。如何获得所需的输出?

But this outputs [u'0,0,0,0,'] rather than what I want, which would be [0,0,0,0]. How can I achieve my desired output?

推荐答案

split()的分隔符参数不是要分割的不同字符的列表,而是整个定界符。您的代码只会拆分出现的逗号空间。

The separator argument for split() is not a list of different characters to split on, but rather the entire delimiter. Your code will only split occurrences of "comma space".

此外,如果您想使用整数而不是子字符串,则需要进行这种转换。

Further, if you want integers instead of substrings, you need to do that conversion.

最后,由于逗号结尾,因此需要从拆分中过滤出空结果。

Finally, because you have a trailing comma, you need to filter empty results from your split.

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

这篇关于将逗号分隔的字符串转换为列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆