![](/img/trans.png)
[英]how to insert and replace a list of words in another list or a string in python
[英]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.