2016-11-05 67 views
-8

我正在编写一个Python脚本。我需要在一个文本文件中搜索以“s,es或ies”结尾的单词,并且该单词必须大于三个字母,需要识别单词数量和单词it-self .....这很难我无法使用它,请帮助我Python脚本搜索文本文件的一个词

+0

*这是硬任务,我不能用它工作* - 再回去学习基础知识和**实际学习**?要求我们为你做这件事不会帮助你学到任何东西。 – Li357

+0

你有一个可重复的例子吗?尝试迭代文件的行并使用'if'语句返回您要查找的内容。 – Jakub

+0

看起来您希望我们为您编写一些代码。尽管许多用户愿意为遇险的编码人员编写代码,但他们通常只在海报已尝试自行解决问题时才提供帮助。展示这一努力的一个好方法是包含迄今为止编写的代码,示例输入(如果有),预期输出以及实际获得的输出(控制台输出,回溯等)。您提供的细节越多,您可能会收到的答案就越多。检查[FAQ](http://stackoverflow.com/tour)和[如何提问](http://stackoverflow.com/help/how-to-ask)。 –

回答

2

我同意评论,你需要去工作的基础知识。这里有一些想法让你开始。

1)你说“搜索文件”。由线像这样打开一个文件并读取行:

with open ('myFile.txt', 'r') as infile: 
    for line in infile: 
     # do something to each line 

2)你可能想存储在数据结构中的每一行,像一个列表:

# before you open the file... 
lines = [] 

# while handling the file: 
lines.append(line) 

3)你需要与每个词一起工作。查看列表的“拆分”功能。

4)您需要查看每个单词的单个字母。看看'字符串切片'。

说了这么多,你可以用10-15行代码来做到这一点。

0

尝试将任务分成不同的任务,如果感觉压倒性的。 以下代码绝不是好事,但希望它足够清晰,以便您明白。

1首先您需要获取您的文本。如果您的文本位于您计算机的文件中,则需要将其放入python可以使用的内容中。

# this code takes the content of "text.txt" and store it into my_text 
with open("text.txt") as file: 
    my_text = file.read() 

2现在您需要处理每个单词。你所有的单词都被放在一个名为my_text的字符串中,并且你希望它们分离(分割)成一个列表,以便你可以单独使用它们。通常词用空格隔开,所以这是你用什么将它们分开:

# take the text and split it into words 
my_words = my_text.split(" ") 

3我并不确切地知道自己想要什么,但是让我们假设你要分开的话存储在不同的列表。那么你将需要这些列表:

# three list to store the words: 
words_s = [] 
words_es = [] 
words_ies = [] 

4现在你需要遍历单词,并与他们做的东西。为实现这一目标最简单的办法是使用一个for循环:

#iterate through each word 
for word in my_words: 

    # you're not interested in short words: 
    if len(word) <= 3: 
     continue # this means: do nothing with this word 


    # now, if the word's length is greater than 3, you classify it: 

    if word.endswith("ies"): 
     words_ies.append(word) # add it to the list 

    if word.endswith("es"): 
     words_es.append(word) # add it to the list 

    if word.endswith("s"): 
     words_s.append(word)  # add it to the list 

4最后,外面的for循环,可以打印单词列表,并获取列表的长度:

print(words_s)  
print(len(words_s)) 

你需要考虑的是如果你想重复或不重复的话。请注意,以“s”,“es”或“ies”结尾的条件等同于以“s”结尾的词。上面的代码将冗余地分配到不同列表中的单词。如果一个单词以“ies”结尾,它也以“es”和“s”结尾,所以它将被存储在三个列表中。如果你想避免重叠,你可以用if语句替换if语句。

不断学习的基础知识为其他答案建议,很快你就可以明白吓人这样的代码:d

with open("text.txt") as myfile: 
    words = [word for word in myfile.read().split(" ") if word.endswith("s") and len(word) > 3] 
    print("There are {} words ending with 's' and longer than 3".format(len(words)))