![](/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.