как собрать в список первое слово в каждой строке?

Рейтинг: 1Ответов: 2Опубликовано: 28.05.2023

есть задание:

"Создайте функцию find_first_words, которая в качестве аргумента использует путь до файла. Функция должна найти первое слово в каждой строке файла, и вернуть эти слова в виде списка.

Если строка пустая, то функция возвращает пустую строку, т.е. ""

мое решение не работает выдает в результате не список первых слов а первые буквы с переносом на другую строку. причем если не писать "+=" вроде как он правильно берет первое слово но исключительно только из последней строки как бы логично. но почему он тогда не добавляет через запятую в одну строку все слова то??? должно получиться так:

['First', 'Second', 'Third', 'And']

а получается:

['F',
 'i',
 'r',
 's',
 't',
 'S',
 'e',
 'c',
 'o',
 'n',
 'd',
 'T',
 'h',
 'i',
 'r',
 'd',
 'A',
 'n',
 'd']

только между буквами символ переноса строки еще есть...(\n)

def find_first_words(input_file):
    # напишите здесь Ваше решение
    s= []
    with open(input_file,'r') as f:
        for line in f:
            s +=line.split()[0]
    return s

а вот со вторым файлом не знаю как решить проблему образец текста

"""I dont know

how do it 

im so sorry"""

исключение:

IndexError: list index out of range

Ответы

▲ 1Принят

Код:

def find_first_words(input_file):
    result = []

    with open(input_file) as f:
        for line in f.readlines():  # перебираем строки файла
            if line != '\n':  # если строка не пустая ...
                result.append(line.split()[0])  # ... добавляем её в файл ...
            else:  # ... иначе ...
                result.append('')  # ... добавляем пустую строку

    return result

для входных данных

"""I dont know

how do it 

im so sorry"""

возвращает

['"""I', '', 'how', '', 'im']
▲ 0

у меня хорошие новости и плохие хорошие: ответ на первую часть задачи. в первом файле в каждой строке есть слово первое и я научилась его добавлять в список вот так:

def find_first_words(input_file):
s= []
with open(input_file,'r') as f:
    for line in f:
        t = line.split()[0]
        s.append(t)
return s

в итоге все выводиться верно: ['First', 'Second', 'Third', 'And']