【问题标题】:Assigning multiple return variables, but one at a time?分配多个返回变量,但一次一个?
【发布时间】:2017-07-02 04:48:19
【问题描述】:

我正在尝试使用 nltk 解析一些数据和格式,但我似乎无法通过函数迭代将多个返回分配给多个变量(请参阅下面的 def preprocess 函数。)我尝试重写我的代码,这通常会导致一个很大的调试,但似乎我的头撞到了故意在那里的 Python 墙上。

def get_7text():
    with open('parsed_text/Larrys Pizza & Sports Parlor_text.csv','r') as file:
        reader = csv.reader(file)
        dict = [row for row in reader]
    file.close()

    my_dict = [l[0] for l in dict]
    text= my_dict[0]
    new_dict=ast.literal_eval(text)
    for k,v in new_dict.items():
        exec(k + '=v')  
    return Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday

def preprocess():
    for day in Days:
        day = str(day)
        day = sent_tokenize(day)
        day = [word_tokenize(s.lower()) for s in day]
        day = [pos_tag(s) for s in day]
        return day

#code here 
Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday = get_7text()
Days=[Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday]
Days=preprocess()

Get7text() 返回我可以成功分配的 7 个字符串。我曾经先让它返回一个包含 7 个键的字典,但格式化对于 NLTK 的 POS 标记等来说很烦人。

问题是这样的。每当我运行预处理时,程序只保留列表中的第一项而忘记了其他 6 项。我试图强制函数将每个返回的输出分配给名为 Days 的变量列表,但无济于事。我还注意到,在 Days=preprocess() 之后,Days 会丢失除第一个元素之外的所有元素(周二到周日是 1 个字符串的空列表)。但是,Days[3] 或 Days[5] 可以正确打印预期的数据。

我期待那里有更好的表示方法。网上没有帖子提到它,无论如何这似乎是一件粗略的事情。

【问题讨论】:

  • 为什么是return day?它将在处理第一个元素后返回,因为它在 for 循环中。
  • 我明白你的意思。谢谢!

标签: python dictionary for-loop iteration nltk


【解决方案1】:

每当python看到'return'时,它会说,“哦,return,你的代码必须完成。我现在停止这个函数。”因此,它在第一次迭代后停止。相反,你应该做的是:

    def preprocess():
        retList = []
        for day in Days:
            day = str(day)
            day = sent_tokenize(day)
            day = [word_tokenize(s.lower()) for s in day]
            day = [pos_tag(s) for s in day]
            retList.append(day)
       return (retList)

当然,如果这不起作用,那么我错过了一些东西,我们都不知所措。

【讨论】:

  • 非常简单的提示。谢谢解决!
  • 不要介意我盗用这句话,但这将是我从现在开始教授函数时的引用:"Oh, return, you must be done with your code. I'll stop the function now.";P
  • 顺便说一句,改用这个成语:tagged_day = [pos_tag(word_tokenize(sent)) for sent in sent_tokenize(day.lower())]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 2017-06-28
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
相关资源
最近更新 更多