在文本文件单词列表中搜索并检查以我输入的每个字母开头的所有单词

时间:2013-09-27 13:18:20

标签: python-3.x

到目前为止,我得到了这个......

with open('d:\word_list.txt', 'r') as inF: 
b = input('Enter word: ') 
for letter in b: 
 for item in inF: 
  if item.startswith(letter): 
   print(item) 

如果我键入“zucaritas”,此代码仅打印以“z”开头的单词,而不打印其他字母,“u”,“c”等。我想检查列表中的所有单词从我要输入的每个字母开始。 我能做什么?顺便说一句,我是python的初学者。感谢

3 个答案:

答案 0 :(得分:2)

第一次迭代inF时耗尽它,并且无法再次迭代。所以循环只会执行b中的第一个字母。

您可以通过为b中的每个字母重复打开文件来获取新文件对象:

b = input('Enter word: ') 
for letter in b: 
 with open('d:\word_list.txt', 'r') as inF: 
  for item in inF: 
   if item.startswith(letter): 
    print(item) 

或者,您可以使用seek手动将文件对象回滚到其开始状态:

with open('d:\word_list.txt', 'r') as inF: 
 b = input('Enter word: ') 
 for letter in b: 
  inF.seek(0)
  for item in inF: 
   if item.startswith(letter): 
    print(item) 

答案 1 :(得分:0)

节点JS脚本

var fs = require("fs");
var letter = process.argv[2];

var writeStream = fs.createWriteStream("./letters/" + letter + ".txt");


fs.createReadStream("./word_list.txt").on("data", function(chunk){
    var words = chunk.toString().split("\n");
    words.forEach(function(word){
        var firstLetter = word.charAt(0);
        if(firstLetter == letter || firstLetter == letter.toUpperCase()){
            console.log(firstLetter);
            writeStream.write(word + "\n");
            console.log("wrote " + word);
        }else{

        }



    });
});

您可以将其称为node your_script_name.js b,将所有以b开头的字词保存到名为letters/b.txt

的文件中

答案 2 :(得分:0)

您可以通过文件中的单词列表打印所有以给定单词中的任何字母开头的单词:

#!/usr/bin/env python3
letters = tuple(input('Enter word: ')) # startswith() can work with a tuple
with open(r'd:\word_list.txt') as file:
    for word in file:
        if word.startswith(letters): # if word starts with any of the letters
           print(word, end='')