Решение модуля 17.3 Поколение Python: для продвинутых

Модуль 17.3 (Работа с текстовыми файлами. Часть 3) курса «Поколение Python: курс для продвинутых» курс расскажет о:

  1. Позиция (курсор) в файле
  2. Менеджеры контекста

Публикуем решения на урок 17.3 Работа с текстовыми файлами. Часть 3

Вызов каких файловых методов (без переданных аргументов) всегда переводит курсор (текущую позицию) в конец файла?


read()

readlines()

Файл numbers.txt содержит строки:

78
12
10

Что выведет приведенный ниже код?

with open(‘numbers.txt’, encoding=’utf-8′) as file:
line1 = file.readline()
line2 = file.read()
print(line2)

12
10

Файл words.txt содержит строки:

conflict connection advice
remember consciousness consensus

Что выведет приведенный ниже код?

with open(‘words.txt’, encoding=’utf-8′) as file:
line1 = file.readline().split()
file.seek(0)
line2 = file.readline().split()
print(max(line2, key=len))

connection

Закрытие файлового объекта после его использования лучше осуществить с помощью


использования менеджера контекста with

 Файл input.txt содержит строки:

pop
goes
the
weasel!

Что выведет приведенный ниже код?

with open(‘input.txt’, encoding=’utf-8′) as file:
print(‘Repeat after me:’, file.readline().strip())
for line in file:
print(line.strip() + ‘!’)

Repeat after me: pop
goes!
the!
weasel!!

Вам доступен текстовый файл text.txt с одной строкой текста. Напишите программу, которая выводит на экран эту строку в обратном порядке.

with open('text.txt') as file:
    line = file.read()
    print(line[::-1])

Вам доступен текстовый файл data.txt, в котором записаны строки текста. Напишите программу, выводящую все строки данного файла в обратном порядке: сначала последнюю, затем предпоследнюю и т.д.

with open('data.txt') as file:
    arr = file.readlines()
    for i in range(len(arr)):
        print(arr[len(arr) - 1 - i].strip())

Вам доступен текстовый файл lines.txt, в котором записаны строки текста. Напишите программу, которая выводит все строки наибольшей длины из файла, не меняя их порядок.

max_len = 0
max_str = []

with open('lines.txt') as file:
    for line in file.readlines():
        if len(line) > max_len:
            max_len = len(line)
            max_str = [line]
        elif len(line) == max_len:
            max_str.append(line)
            
for elem in max_str:
    print(elem, end = '')

Вам доступен текстовый файл numbers.txt, каждая строка которого может содержать одно или несколько целых чисел, разделенных одним или несколькими пробелами.

Напишите программу, которая вычисляет сумму чисел в каждой строке и выводит эту сумму на экран (для каждой строки выводится сумма чисел в этой строке).

with open('numbers.txt') as file:
    for line in file.readlines():
        print(sum([int(elem) for elem in line.split()]))

Вам доступен текстовый файл nums.txt. В файле могут быть записаны целые неотрицательные числа и все, что угодно. Числом назовем последовательность одной и более цифр, идущих подряд (число всегда неотрицательно).

Напишите программу, которая вычисляет сумму всех чисел, записанных в файле.

summa = 0

with open('nums.txt') as file:
    for line in file.readlines():
        result_line = ''
        for elem in line:
            result_line += elem if elem.isdigit() else ' '
        summa += sum([int(elem) for elem in result_line.split()])
print(summa)

Вам доступен текстовый файл file.txt, набранный латиницей. Напишите программу, которая выводит количество букв латинского алфавита, слов и строк. Выведите три найденных числа в формате, приведенном в примере.

linesNum = 0
wordsNum = 0
lettersNum = 0

with open('file.txt') as file:
    for line in file.readlines():
        linesNum += 1
        wordsNum += len(line.split())
        lettersNum += len([elem for elem in line if elem.isalpha()])

print("Input file contains:\n" + str(lettersNum) + " letters\n" + str(wordsNum) + " words\n" + str(linesNum) + " lines")

Вам доступны два текстовых файла first_names.txt и last_names.txt, один с именами, другой с фамилиями.

Напишите программу, которая c помощью модуля random создает 33 случайные пары имя + фамилия, а затем выводит их, каждую на отдельной строке.

from random import randint

firstNames = []
lastNames = []

with open('first_names.txt') as file:
    for line in file.readlines():
        firstNames.append(line)

with open('last_names.txt') as file:
    for line in file.readlines():
        lastNames.append(line)

for i in range(3):
    print(firstNames[randint(0, len(firstNames))].strip() + ' ' + lastNames[randint(0, len(lastNames))].strip())

Вам доступен текстовый файл population.txt с названиями стран и численностью их населения, разделенными символом табуляции '\t'.

Напишите программу выводящую все страны, название которых начинается с буквы 'G', численность населения которых больше чем 500 000 человек, не меняя их порядок.

from random import randint

with open('population.txt') as file:
    for line in file.readlines():
        if (line.startswith('G') and int(line.strip().split()[-1]) > 500000):
            print(line.strip().split()[0])

Вам доступен CSV-файл data.csv, содержащий информацию в csv формате. Напишите функцию read_csv для чтения данных из этого файла. Она должна возвращать список словарей, интерпретируя первую строку как имена ключей, а каждую последующую строку как значения этих ключей.

def read_csv():
    needWriteKeys = True
    keys = []
    result = []

    with open('data.csv') as file:
        for line in file.readlines():
            if needWriteKeys:
                keys = line.strip().split(',')
                needWriteKeys = False
            else:        
                result.append(dict(zip(keys, line.strip().split(','))))
    return result

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector