Python脚本搜索单词的文本文件

时间:2016-11-05 21:54:28

标签: python

我正在编写Python脚本。我需要在文本文件中搜索以"结尾的单词。 s,es或ies"这个词必须大于三个字母,需要知道多少个单词和单词it-self .....这是一项艰巨的任务,我无法使用它,请帮帮我

2 个答案:

答案 0 :(得分: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行代码完成这个。

答案 1 :(得分: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))

你需要考虑的是你想要重复或不重复的话。请注意,条件&#34; s&#34; s&#34;,&#34; es&#34;或者&#34; ies&#34;&#39;等同于&#34; s&#34;&#39;结束的单词。上面的代码将冗余地分配在不同列表中的单词。如果一个单词以&#34; ies&#34;结尾它也以&#34; es&#34;结束。和&#34; s&#34;,所以它将存储在三个列表中。如果要避免重叠,可以使用else 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)))