如何在列表中插入文件的单词?

2024-09-27 04:20:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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' object is not iterable

我如何解决这个问题?你知道吗


Tags: 函数intxtfordatadef编程file
2条回答

代码中有几个问题。 1) devalabras函数通常不返回任何值。如果在函数中不返回任何内容,则这是默认值。你知道吗

2)ifstr(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)

除了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

相关问题 更多 >

    热门问题