0
Whis腳本從源代碼中讀取藝術家名稱後面跟着括號的信息,其中包含藝術家是否取消以及他們來自哪個國家的信息。方法返回Unicode對象,分配到一個NoneType。在Python中
一個正常的句子可能看起來像:
奧德·諾德斯托加(NO)(已取消),20-08-2012,BLA
正如我導入數據,我把它們解碼成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)
謝謝你,這工作。如果我猜對了:問題是remove_extra(after)沒有返回值? – olovholm
是的。調用'remove_extra(after)'你遞歸地調用了例程,然後拋棄結果。返回的值需要傳回給調用者。 –