2016-11-05 4 views
-8

Я пишу скрипт Python. Мне нужно найти текстовый файл для слова, которое заканчивается словами «s, es или ies», и слово должно быть больше трех букв, необходимо указать количество слов и слово «я» ..... это трудная задача я не могу работать с ним, пожалуйста, помогите мнеPython script ищет текстовый файл для слова

+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) Вы должны будете работать с каждым словом. загляните в функцию «split» списков.

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 Теперь вам нужно прорежировать слова и делать с ними вещи. Для этого проще всего сделать, это использовать для цикла:

#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 Наконец, вне цикл, вы можете распечатать список слов, а также получить длину списка:

print(words_s)  
print(len(words_s)) 

Что-то, что вам нужно рассмотреть, если вы хотите, чтобы слова повторялись или нет. Обратите внимание, что условие «слово, которое заканчивается на« s »,« es »или« ies », эквивалентно« слову, которое заканчивается на «s». В приведенном выше коде избыточное количество слов, распределенных в разных списках. Если слово заканчивается на «ies», оно также заканчивается «es» и «s», поэтому оно будет храниться в трех списках. Если вы хотите избежать совпадения, вы можете заменить выражения if операторами else if.

Keep обучения основам, как и другие ответы предполагают, и вскоре вы будете в состоянии понять страшный такой код: 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))) 
Смежные вопросы