簡體   English   中英

無法從Python函數返回列表元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM