我有一个简单的函数来读取csv文件并从中提取第一个coloum:
import csv
def pass_username():
with open('test.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for row in spamreader:
return row[0]
Run Code Online (Sandbox Code Playgroud)
当我将此函数称为:
a = pass_username()
print a
Run Code Online (Sandbox Code Playgroud)
这只打印第一个元素.但是,当我return用printas 替换word print row[0]并调用函数时,pass_username()它会打印所有元素.我想将该函数分配给变量,因此我想使用return.怎么解决?
test.csv的内容:
"test@gmail.com","rockon"
"hello@gmail.com","hey"
"hithere@gmail.com","ok"
"hellosir@gmail.com","password"
Run Code Online (Sandbox Code Playgroud)
正如其他回答说的那样,你可以将结果累积到一个列表中并返回.但另一种方式,将取代return以yield引起你的函数返回产生当你决定后遍历它(可能带有for循环),你得到的物品可迭代类型的对象.
以下是如何在代码中使用它:
import csv
def pass_username():
with open('test.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for row in spamreader:
yield row[0]
username_generator = pass_username()
# iterate through the usernames with a for loop
for name in username_generator:
print name
# call the list constructor which causes it to produce all of the names
print list(pass_username())
Run Code Online (Sandbox Code Playgroud)
请记住,用户名是在需要时生成的,因此您可以执行username_generator.next()下一个用户名,而无需生成所有用户名.
| 归档时间: |
|
| 查看次数: |
2185 次 |
| 最近记录: |