使用for循环将对象添加到列表中?

时间:2015-08-27 22:34:14

标签: python django list

我已经完成了关于堆栈溢出的研究,但是找不到适合我的答案,即使过去已经发布了类似的问题。我的问题是我想添加一个字符串值,我从一个for循环中获取字符串值,该循环遍历列表并匹配正则表达式。我想将它们添加到一个组合的值列表中,我正在使用一个干净的函数来处理表单的提交,但是当数据打印到我的终端时它会出现如下:

   ['#example']
   ['#test']

当我希望这些值打印时:

   ['#example', '#test',]

这是我在views.py中的代码

      def clean(self):
        data = self.cleaned_data
        regex = re.compile("\B#\w\w+")
        tweeters = data['tweets']
        split_tweets = tweeters.split()
        for x in split_tweets:
           if re.search(regex, x):
            master_list = [x]
            print master_list

3 个答案:

答案 0 :(得分:2)

您需要append到列表,否则您只是丢掉所有以前的值

  def clean(self):
      data = self.cleaned_data
      regex = re.compile("\B#\w\w+")
      tweeters = data['tweets']
      split_tweets = tweeters.split()
      master_list = []
      for x in split_tweets:
          if re.search(regex, x):
              master_list.append(x)
      print master_list

您也可以在此处使用列表推导

  def clean(self):
      data = self.cleaned_data
      regex = re.compile("\B#\w\w+")
      tweeters = data['tweets']
      split_tweets = tweeters.split()
      master_list = [x for x in split_tweets if re.search(regex, x)]
      print master_list

答案 1 :(得分:1)

请改为:

  def clean(self):
    data = self.cleaned_data
    regex = re.compile("\B#\w\w+")
    tweeters = data['tweets']
    split_tweets = tweeters.split()
    master_list = []
    for x in split_tweets:
       if re.search(regex, x):
        master_list.append(x)
    print master_list

您需要将元素附加到列表而不是影响新的“一元素列表”[x]到master_list,它会被下一个值覆盖

答案 2 :(得分:1)

你正在做一些奇怪的事情。为什么要继续重新分配list?在循环之前初始化list,在循环内初始化append(),并在循环之后打印整个东西。

master_list = []
for x in split_tweets:
   if re.search(regex, x):
    master_list.append(x)
print master_list