[英]Cannot return list elements from Python function
我有一個函數table()
,它讀取csv文件並返回單個列表中的行。 我想映射這些列表來創建一個字典,字段標題是鍵,底層行是值。 但是我似乎無法做到這一點。 當我嘗試僅調用我在命令提示符中從函數( l
)創建的列表列表中的第一個元素時,它返回所有列表,直到'N',即'None'中的第一個字母,盡管我如果讀者是無,則打破(返回)。 當我使用sys.stdout對文本文件執行相同操作時,它會執行相同操作,但“N”將替換為<type 'list'>
。 有誰知道我做錯了什么,以及我如何在給出table()
函數的情況下從CSV文件創建字典(或列表列表table()
?
import csv
def table():
with open('C:\\Python27\\test.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row
if reader is None:
return
l = list(str(table()))
keys = l[0]
print keys
輸出文本文件:
['Field1', 'Field2', 'Field3', 'Field4']
['a', '1', 'I', 'access']
['b', '2', 'II', 'accessing\n']
['c', '3', 'III', 'accommodation']
['d', '4', 'IIII', 'basically']
<type 'list'>
更詭異
def table():
with open('C:\\Python27\\test.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
yield row
您實際上沒有從table
函數返回任何內容。 試試這樣:
def table():
with open('C:\\Python27\\test.csv', 'rb') as f:
lines = []
reader = csv.reader(f)
if reader:
for row in reader:
lines.append(row)
return lines
else:
return []
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.