簡體   English   中英

如何在列表中插入文件的單詞?

[英]How to insert the words of a file in a list?

我用Python進行即時編程,我有下一個功能:

def devPalabras(nombreF):
    """Receive a file and returns each word in the file
        syntax: palabra.devPalabras(<fichero.txt>)"""

    if str(nombreF):
        file=open(nombreF,'r')
    else:
        return -1
    data = file.readlines()
    contador = 0
    for renglon in data:
        for palabra in renglon.split(' '):
            contador+=1
            print palabra

我在主程序中調用函數為:

palabras = [] #Create a empty list of words
for palabra in devPalabras("palabras.txt"):
    palabras.append(palabra)

最后,我要打印此列表:

print palabras

好吧,編譯程序時出現下一個錯誤:

TypeError:“ NoneType”對象不可迭代

我該如何解決?

除了return -1 ,您不會返回任何結果,因此默認情況下,調用devPalabras("palabras.txt")返回None

您可以做的是創建一個列表,假設為listOfPalabras並且每次打印palabra ,都將其添加到列表中:

listOfPalabras = [] # creates a list

for renglon in data:
    for palabra in renglon.split(' '):
        contador+=1
        listOfPalabras.append(palabra) # add each element you want to the list

在函數的結尾,您可以返回列表:

return listOfPalabras

您的代碼中有幾個問題。 1)您的devPalabras函數通常返回None。 如果您未在函數中返回任何內容,則為默認設置。

2)如果str(nombreF)不是檢查它是否是字符串的正確方法。 使用isinstance(nombreF,str)

3)稍后當函數返回-1時,您將遇到一個問題。 引發異常。

4)僅用''分隔行將導致最后一個單詞以換行符結尾。 剝離此換行符。

我相信這是您要尋找的:

def devPalabras(nombreF):
    """Receive a file and returns each word in the file
    syntax: palabra.devPalabras(<fichero.txt>)"""

    file=open(nombreF,'r')
    data = file.readlines()
    contador = 0
    for renglon in data:
        for palabra in renglon.split(' '):
            contador+=1
            yield palabra.strip()

palabras = [] #Create a empty list of words
for palabra in devPalabras("palabras.txt"):
    palabras.append(palabra)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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