方法返回Unicode对象,被赋值为NoneType。在Python中

时间:2012-10-09 19:06:33

标签: python unicode

这些剧本从一个来源读取,其中的行由艺术家姓名组成,后面跟一个括号,其中包含有关艺术家是否取消以及他们来自哪个国家的信息。

正常句子可能如下:

Odd Nordstoga(NO)(已取消),20-08-2012,Blå

当我导入数据时,我将它们解码为UTF-8,这很好用。取消注释remove_extra()方法的else块中的第二个注释,表明所有变量都是Unicode类型。

但是,当返回一个值并将其放入另一个变量并测试其值时,大多数变量似乎都是NoneType。

为什么会这样?它怎么能纠正?似乎是方法返回和新变量赋值之间发生的错误。

# -*- charset: utf-8 -*-

import re


f1 = open("oya_artister_2011.csv")

artister = []
navnliste = []

PATTERN = re.compile(r"(.*)(\(.*\))")
TEST_PAT = re.compile(r"\(.*\)")

def remove_extra(tekst):
    if re.search(PATTERN, tekst) > 1:
        after = re.findall(PATTERN, tekst)[0][0]
        #print "tekst is: %s   " % tekst
        #print "and of type: %s" % type(tekst)
        remove_extra(after)

    else: 
        #print "will return: ", tekst
        #print "of type: %s" % type(tekst)
        return tekst


for line in f1:
    navn, _rest = line.split(",",1)
    navn = navn.decode("utf-8")
    artister.append(navn)


for artist in artister:
    ny_artist = remove_extra(artist)
    #print "%s" % ny_artist
    print "of type: %s" % type(ny_artist)

1 个答案:

答案 0 :(得分:1)

尝试

return remove_extra(after)

而不仅仅是

remove_extra(after)