如何在列表中插入文件中的单词?
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' object is not iterable
我该如何解决这个问题?
除了 return -1
之外,您没有 return 任何结果,因此默认调用 devPalabras("palabras.txt")
returns 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列表:
return listOfPalabras
您的代码中有几个问题。
1) 你的 devPalabras 功能正常 returns None。如果您不 return 函数中的任何内容,则这是默认值。
2) if str(nombreF)
不是检查它是否为字符串的正确方法。使用 isinstance(nombreF, str)
3) 当您的函数 return 为 -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)
我在 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
我该如何解决这个问题?
除了 return -1
之外,您没有 return 任何结果,因此默认调用 devPalabras("palabras.txt")
returns 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列表:
return listOfPalabras
您的代码中有几个问题。 1) 你的 devPalabras 功能正常 returns None。如果您不 return 函数中的任何内容,则这是默认值。
2) if str(nombreF)
不是检查它是否为字符串的正确方法。使用 isinstance(nombreF, str)
3) 当您的函数 return 为 -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)