如何从单独的文本文件中打印单词列表?我想打印所有单词,除非单词的长度为4个字符。
words.txt文件如下所示:
减少狡猾的传播带来的潜在的异常凝固溶解絮絮叨叨总共有334个单词。我正在尝试显示列表,直到它到达一个长度为4的单词并停止。
wordsFile = open("words.txt", 'r')
words = wordsFile.read()
wordsFile.close()
wordList = words.split()
#List outputs length of words in list
lengths= [len(i) for i in wordList]
for i in range(10):
if i >= len(lengths):
break
print(lengths[i], end = ' ')
# While loop displays names based on length of words in list
while words != 4:
if words in wordList:
print("\nSelected words are:", words)
break
5 9 11 7 6 8 9 11 9 4
选定的单词是:
减弱
Chicanery
传播
winsay
潜伏
异常
凝固
解散
garrulous
答案 0 :(得分:1)
要读取文本文件中的所有单词,并打印每个单词,除非它们的长度为4:
with open("words.txt","r") as wordsFile:
words = wordsFile.read()
wordsList = words.split()
print ("Selected words are:")
for word in wordsList:
if len(word) != 4: # ..unless it has a length of 4
print (word)
稍后在你的问题中,你写了,"我试图显示前10个单词" ...)。如果是这样,请添加一个计数器,如果其值为< = 10,则添加要打印的条件。
答案 1 :(得分:1)
鉴于你只需要前10个单词。阅读所有4行并没有太多意义。你可以安全地阅读第一篇并节省一些时间。
#from itertools import chain
with open('words.txt') as f:
# could raise `StopIteration` if file is empty
words = next(f).strip().split()
# to read all lines
#words = []
#for line in f:
# words.extend(line.strip().split())
# more functional way
# words = list(chain.from_iterable(line.strip().split() for line in f))
print("Selected words are:")
for word in words[:10]:
if len(word) != 4:
print(word)
我留下了一些替代方法,但注释掉了。
使用while循环进行编辑。
i = 0
while i < 10:
if len(words[i]) != 4:
print(words[i])
i += 1
由于您知道可以执行多少次迭代,因此可以使用for
循环隐藏迭代的机制。一段时间不能很好地促进这一点,并且当你不知道你会做多少次迭代时更好地使用它。
答案 2 :(得分:1)
虽然我会使用for或while循环,就像Paul Rooney建议的那样,您也可以调整代码。 创建列表长度[]时,将创建一个列表,其中包含wordList中包含的所有单词的长度。
然后使用for循环以length []循环前10个长度; 如果需要使用此方法,可以嵌套for循环,比较单词和长度:
#lengths[] contains all the lengths of the words in wordList
lengths= [len(i) for i in wordList]
#foo[] cointains all the words in wordList
foo = [i for i in wordList]
#for the first 10 elements of lengths, if the elements isn't 4 char long
#print foo[] element with same index
for i in range(10):
if lengths[i] != 4:
print(foo[i])
if i >= len(lengths):
break
我希望这很清楚,这就是你要找的答案