Python:return语句不起作用
我正在尝试使用以下程序打印姓名列表Python:return语句不起作用,python,function,Python,Function,我正在尝试使用以下程序打印姓名列表 def search(): with open('business_ten.json') as f: data=f.read() jsondata=json.loads(data) for row in jsondata['rows']: #print row['text'] a=str(row['name']) #print a re
def search():
with open('business_ten.json') as f:
data=f.read()
jsondata=json.loads(data)
for row in jsondata['rows']:
#print row['text']
a=str(row['name'])
#print a
return a
search()
如果我放return语句,它不会打印,但是如果我放print语句,它会工作
我想让返回声明生效。我想要return语句而不是print语句这是由于缩进问题导致您的
return
语句无法工作。
在搜索中放入for
循环
def search():
with open('business_ten.json') as f:
data=f.read()
jsondata=json.loads(data)
for row in jsondata['rows']:
a=str(row['name'])
yield a
data = search()
print list(data)
或
不能从循环内部返回,因为该方法将在循环的第一部分之后完成。似乎您需要打印a,将a附加到数据列表中,然后在循环完成后返回所述列表
而且你的缩进非常。。。有趣。我不确定这是否与您如何复制代码有关,或者这是否是您的代码的实际外观,但是我可以想象前者,否则它将永远不会运行。你可以编辑这个问题来纠正这个问题吗?我想这就是你想要的,但是你可以更好地解释它
def search():
with open('business_ten.json') as f:
data=f.read()
jsondata=json.loads(data)
for row in jsondata['rows']:
a=str(row['name'])
yield a
print list(search())
创建先前打印的所有字符串的列表并返回该列表
def search():
with open('business_ten.json') as f:
data=f.read()
jsondata=json.loads(data)
return_data = []
for row in jsondata['rows']:
#print row['text']
a=str(row['name'])
#print a
return_data.append(a)
return return_data
print(search())
在Python中,缩进是语法的一部分。请正确设置代码格式。Return结束方法并在第一次迭代时返回a
的值。看一看。另外,您可能不希望return
在其中,而是希望yield
代替print
,您可以在for
循环结束后追加一个列表并返回该列表。我尝试过了,它不起作用。它不打印anything@dipit检查更新的代码。您需要在某个变量中捕获return语句,然后打印它。它将只返回第一行。相反,将返回数据存储在列表中,并在循环结束后返回该列表。这仍然不起作用,在调用return之后,循环将结束,因此您只能从jsondata['rows']@AshwaniDausodia生成的可能多个结果中得到一个结果,然后生成器将提供帮助。我更新了。
def search():
with open('business_ten.json') as f:
data=f.read()
jsondata=json.loads(data)
return_data = []
for row in jsondata['rows']:
#print row['text']
a=str(row['name'])
#print a
return_data.append(a)
return return_data
print(search())