繁体   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