Python вывести строку по номеру

Содержание
  1. Поиск в файле строки по номеру
  2. Получить номер строки определенной фразы в файле Python
  3. 8 ответов
  4. Как на питоне вывести строку с определённым значением из файла?
  5. Тренировка: как в Python найти номер строки с заданным вхождением
  6. Как в Python найти номер строки с заданным вхождением?
  7. Задача №1: Поиск номера первой строки с заданным вхождением
  8. Техническое задание:
  9. Решение:
  10. Цель достигнута: номер строки найден!
  11. Наведем красоту — поместим код в функцию!
  12. Как работает скрипт?
  13. Немного хвалебной речи и приглашение к участию в решении следующей задачи:
  14. Задача №2: Выводим номера всех строк, содержащих искомое вхождение
  15. Техническое задание:
  16. Решение:
  17. Финальное преображение кода: создаём функцию поиска номеров строк с заданным вхождением
  18. Подводим итог
  19. Python вывести строку по номеру
  20. 2. Срезы (slices)
  21. 3. Методы
  22. 3.1. Методы find и rfind
  23. 3.2. Метод replace
  24. 3.3. Метод count

Поиск в файле строки по номеру

Ребята! Делаю текстовую игру, чтобы научится программировать на Python.

Нужна помощь по вопросу, который у меня всегда на уме.

Значит есть файл .txt. Туда записываются исходные значения, а каждая строчка нумеруется «1: » (да, с пробелом).
Затем в программном коде записывается функция, которая считывает файл и производит операции над данными.
Операции такие:
1) найти в строке файла строчку с номером (например) «15: »
2) считать целочисленное значение, идущее после пробела
3) забить его в переменную для дальнейшего использования
А потом такие:
1) открыть тот-же файл, найти строчку (например) «17: »
2) записать именно в нее, с учетом пробела после нумерации строки, целое число
3) ну дальше закрываем и все понятно.

Спасибо за помощь

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Читайте также:  Как правильно чистить экран смартфона

Вывести содержимое строки в файле по номеру
Здравствуйте, подскажите, пожалуйста, как можно передать содержимое строки с текстового файла (зная.

Поиск строки файла по ее номеру
Привет, помогите, не могу сделать прогу. Дан файл, нужна реализовать поиск строки по ее номеру из.

Поиск файлов в папке и под папках, и замена в них строки по её номеру
В общем я в bat-никах вообще туго понимаю, никак не могу решить такую задачу, есть папка.

Поиск в файле нужной строки и использование строки, находящейся рядом
Попробую объяснить, как можно, проще. Если что непонятно, напишите. Есть файл base.txt. В нем.

Источник

Получить номер строки определенной фразы в файле Python

мне нужно получить номер строки в текстовом файле. Фраза может быть:

мне нужно открыть файл, найти в нем эту фразу и распечатать номер строки.

Я использую Python 2.6 в Windows XP

Вот Что У Меня Есть:

это не домашнее задание, это часть проекта, над которыми я работаю. Я даже не знаю, как узнать номер телефона.

8 ответов

EDIT 1.5 лет спустя (после того, как он получил еще один upvote): я оставляю это как есть; но если бы я писал сегодня, написал бы что-то ближе к решению Ash/suzanshakya:

  • используя with открыть файлы-это идиома pythonic — она гарантирует, что файл будет правильно закрыт, когда блок с помощью файла заканчивается.
  • итерация через файл с помощью for line in f намного лучше, чем for line in f.readlines() . Первый является pythonic (например, будет работать если f является любым общим iterable; не обязательно файловый объект, который реализует readlines ), и более эффективным!—7—> создает список со всем файлом в памяти, а затем перебирает его. * if search_phrase in line — это более подходящие для Python, чем if line.find(search_phrase) >= 0 , так как это не требует line для реализации find , читает более легко, чтобы увидеть, что предназначено, и не легко облажаться (например, if line.find(search_phrase) и if line.find(search_phrase) > 0 оба не будут работать для всех случаев, так как find возвращает индекс первого совпадения или -1).
  • его проще / чище обернуть повторяющийся элемент в enumerate как for i, line in enumerate(f) не удалось инициализировать line_num = 0 перед циклом, а затем вручную инкремент в цикле. (Хотя, возможно, это труднее читать для людей, незнакомых с enumerate .)

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

откройте файл, а затем сделайте что-то вроде.

существует множество способов чтения строк из файлов в Python, но for line in f техника более эффективна, чем большинство.

Источник

Как на питоне вывести строку с определённым значением из файла?

Простой 9 комментариев

Xacker_Name, или получал номер строки где такое значение
допустим строки:
123 #1 строка
321 #2 строка
456 #3 строка
654 #4 строка

и я знаю значение 321
и я хочу узнать какая это строка 1 или 2 или 3 или 4

ну допустим я пишу бота с балансом тип, и в файл при старте записывается значение строки id пользователя tg и баланс., Cтрока в итоге такая = 123;0
и при команде допустим изменить баланс пользователю чтобы выводился изначальный баланс

Для этого используются базы данных.

Если вы хотите вывести строку 654321 (вы же именно это написали)
print(«654321»)

Но если у вас задача «найти номер строки с текстом 654321», то решение будет другим.

А если у вас задача считать данные и записать вместо этого новые данные, то разумнее использовать готовые решения — json+dict (для простого хранения небольшого количества нечасто меняемых пар ключ-значение) или БД (если данных много, важна стабильность и устойчивость к сбоям)

Источник

Тренировка: как в Python найти номер строки с заданным вхождением

Как в Python найти номер строки с заданным вхождением?

Как искать иголку в стоге сена мы выяснили, пришло время отыскать номер строки с заданным вхождением. А для того, чтобы поиски продвигались активнее, предлагаю поиграть в следователей — работа у них очень разноплановая: то преступника разыскивают, то код от сейфа.. Только представьте: следователи отыскали огромный текстовый файл, в котором тысячи строк. И лишь одна из них содержит фразу «я здесь ни при чем». А номер этой строки — недостающая часть кода от сейфа. Но мы же с вами — великие программисты! Мы сможем при помощи Python найти номер строки с заданными символами! Только составим предварительно ТЗ.

Кстати, а что, если в файле несколько строк с искомой фразой, и нам нужно вывести номера всех этих строк? Этот вариант мы не оставим без внимания и обязательно рассмотрим в этой статье в задаче №2. А сейчас приступим к решению первой задачи!

Задача №1: Поиск номера первой строки с заданным вхождением

Техническое задание:

Цель: вывести на экран номер строки, в которой содержится фраза: «я здесь ни при чем». Если таких строк несколько, выводим номер первой строки.

Порядок выполнения:

1. Инициализировать файл, в котором будем осуществлять поиск, а также определить искомую фразу.

2. Открыть заданный файл и произвести построчное считывание текста.

3. При считывании каждую строку файла проверять на вхождение фразы: «я здесь ни при чем». Если фраза в строке найдена, остановить построчное считывание и вывести номер строки на экран.

4. В заключение (исключительно в тренировочных целях!), оформим написанный код в функцию и осуществим ее вызов.

Для тренировки мы возьмем короткий файл — в нем легче протестировать работу нашего кода. Файл под названием «cats_fault.txt» следующего вида:

Решение:

1. Инициализируем переменные:

Для начала укажем Питону, какой файл он проглотит на обед и где этот файл находится:

В приведенной выше строчке кода нужно поменять «path_to_file» на путь к вашему файлу. Если вы новичок и не знаете, как задать путь к файлу, прочитайте инструкцию по ссылке: «Как задать путь к файлу».

Затем определим искомую фразу:

2. Открываем файл и построчно считываем данные:

Откроем файл с помощью конструкции with open и оформим построчное считывание из файла с помощью функции enumerate() так, чтобы номер строки считывался в переменную num_line, а сама строка — в переменную line:

Подробнее о построчном чтении файла можно прочитать по ссылке в статье «Построчное чтение файла в Python 3».

3. Проверяем строки на вхождение искомой фразы

Добавим в цикл for проверку каждой считанной строки на вхождение фразы required. Как только такая строка будет найдена, выведем ее номер и выйдем из цикла с помощью break:

Цель достигнута: номер строки найден!

Запускаем код и тестируем его работоспособность. Ура! Номер строки с фразой «я здесь ни при чем» выведен правильно! Обратите внимание, что по умолчанию, функция enumerate() производит нумерацию строк с нуля(не с единицы!), поэтому программа вывела на экран номер строки: 8.

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

Как работает скрипт?

Описанная выше функция find_string_number содержит два параметра: путь к файлу path_to_file и искомую фразу required. После открытия файла, производим построчное считывание с помощью функции enumerate(), в результате чего номер текущей строки считывается в переменную num_line, а текст строки в переменную line. В цикле if проверяем вхождение фразы required в строку line. Если вхождение найдено, то возвращаем номер строки и выходим из цикла for. Если после проверки всех строк, вхождение не было выявлено, возвращаем сообщение о провале операции: ‘Ни одной строки с заданным содержанием не нашлось. Sorry. Это котик виноват’.

Немного хвалебной речи и приглашение к участию в решении следующей задачи:

Отлично! Мы справились с заданием и научились находить первую строку в файле с искомой фразой! Теперь, опираясь на написанный выше код, мы легко сможем решить похожую задачу. На этот раз предлагаю не ограничиваться номером первой найденной строки, а вывести номера всех строк, содержащих искомую фразу! Да, и фразу поменяем: будем искать подстроку, порочащую честь ушастого: «Это котик виноват».

Задача №2: Выводим номера всех строк, содержащих искомое вхождение

Техническое задание:

Цель: вывести на экран номера всех строк, в которых содержится фраза: «Это котик виноват».

Порядок выполнения:

1. Инициализировать файл, в котором будем осуществлять поиск, а также определить искомую фразу.

2. Открыть заданный файл и произвести построчное считывание текста. При считывании каждую строку файла проверять на вхождение фразы: «это котик виноват». Если фраза в строке найдена, добавить номер строки в список string_numbers. Вывести все элементы списка string_numbers на экран.

Решение:

1. Инициализация переменных

Прежде всего предлагаю определиться, куда мы будем складывать найденные номера строк? На мой взгляд, массив — вполне пригодная тара для такого хранения. Поэтому помимо пути к файлу и переменной для хранения искомой фразы, инициализируем список: string_numbers:

2. Открываем файл, построчно считываем содержимое файла и проверяем каждую строку на вхождение подстроки required. Если вхождение найдено, добавляем номер строки в конец списка string_numbers. После проверки всех строк, выводим список на экран:

В результате работы скрипт отыскал 2 строки с вхождением required и вывел их в виде списка на экран:

Финальное преображение кода: создаём функцию поиска номеров строк с заданным вхождением

А теперь, тренировки ради, предлагаю оформить написанный выше полезный код в красивую функцию под названием find_string_numbers() с двумя параметрами: file_path — содержит путь к файлу и required — содержит искомую фразу:

В данном варианте, после прохождения цикла for и проверки всех считанных строк, добавлена проверка на длину списка. Если длина списка больше нуля, это значит, что, как минимум, одна строка содержит искомую фразу и функция find_string_numbers() возвращает список с номерами строк. В противном случае, функция вернет сообщение «Ни одной строки с заданным содержанием не нашлось. Sorry. Это котик виноват».

Подводим итог

Как показывает практика, в Python приятно иметь дело с файлами. Если открывать файл с помощью конструкции with, то можно не беспокоиться о его закрытии — python сделает эту работу за нас. А функция enumerate() самостоятельно пронумерует все строки файла. Так что нам останется проявить лишь немного навыков работы с циклами, чтобы с позволения Python найти номер строки (или отыскать все строки) с заданным вхождением.

Источник

Python вывести строку по номеру

Строка считывается со стандартного ввода функцией input() . Напомним, что для двух строк определена операция сложения (конкатенации), также определена операция умножения строки на число.

Строка состоит из последовательности символов. Узнать количество символов (длину строки) можно при помощи функции len .

Любой другой объект в Питоне можно перевести к строке, которая ему соответствует. Для этого нужно вызвать функцию str() , передав ей в качестве параметра объект, переводимый в строку.

2. Срезы (slices)

Срез (slice) — извлечение из данной строки одного символа или некоторого фрагмента подстроки или подпоследовательности.

Есть три формы срезов. Самая простая форма среза: взятие одного символа строки, а именно, S[i] — это срез, состоящий из одного символа, который имеет номер i . При этом считается, что нумерация начинается с числа 0. То есть если , то , , , , .

Номера символов в строке (а также в других структурах данных: списках, кортежах) называются индексом.

Если указать отрицательное значение индекса, то номер будет отсчитываться с конца, начиная с номера -1 . То есть , , , , .

Или в виде таблицы:

Строка S H e l l o
Индекс S[0] S[1] S[2] S[3] S[4]
Индекс S[-5] S[-4] S[-3] S[-2] S[-1]

Если же номер символа в срезе строки S больше либо равен len(S) , или меньше, чем -len(S) , то при обращении к этому символу строки произойдет ошибка IndexError: string index out of range .

Срез с двумя параметрами: S[a:b] возвращает подстроку из b — a символов, начиная с символа c индексом a , то есть до символа с индексом b , не включая его. Например, S[1:4] == ‘ell’ , то же самое получится если написать S[-4:-1] . Можно использовать как положительные, так и отрицательные индексы в одном срезе, например, S[1:-1] — это строка без первого и последнего символа (срез начинается с символа с индексом 1 и заканчиватеся индексом -1, не включая его).

При использовании такой формы среза ошибки IndexError никогда не возникает. Например, срез S[1:5] вернет строку ‘ello’ , таким же будет результат, если сделать второй индекс очень большим, например, S[1:100] (если в строке не более 100 символов).

Если опустить второй параметр (но поставить двоеточие), то срез берется до конца строки. Например, чтобы удалить из строки первый символ (его индекс равен 0), можно взять срез S[1:] . Аналогично если опустить первый параметр, то можно взять срез от начала строки. То есть удалить из строки последний символ можно при помощи среза S[:-1] . Срез S[:] совпадает с самой строкой S .

Любые операции среза со строкой создают новые строки и никогда не меняют исходную строку. В Питоне строки вообще являются неизменяемыми, их невозможно изменить. Можно лишь в старую переменную присвоить новую строку.

На самом деле в питоне нет и переменных. Есть лишь имена, которые связаны с какими-нибудь объектами. Можно сначала связать имя с одним объектом, а потом — с другим. Можно несколько имён связать с одним и тем же объектом.

Если задать срез с тремя параметрами S[a:b:d] , то третий параметр задает шаг, как в случае с функцией range , то есть будут взяты символы с индексами a , , и т. д. При задании значения третьего параметра, равному 2, в срез попадет кажый второй символ, а если взять значение среза, равное -1 , то символы будут идти в обратном порядке. Например, можно перевернуть строку срезом S[::-1] .

3. Методы

Метод — это функция, применяемая к объекту, в данном случае — к строке. Метод вызывается в виде Имя_объекта.Имя_метода(параметры) . Например, S.find(«e») — это применение к строке S метода find с одним параметром «e» .

3.1. Методы find и rfind

Метод find находит в данной строке (к которой применяется метод) данную подстроку (которая передается в качестве параметра). Функция возвращает индекс первого вхождения искомой подстроки. Если же подстрока не найдена, то метод возвращает значение -1.

Аналогично, метод rfind возвращает индекс последнего вхождения данной строки (“поиск справа”).

Если вызвать метод find с тремя параметрами S.find(T, a, b) , то поиск будет осуществляться в срезе S[a:b] . Если указать только два параметра S.find(T, a) , то поиск будет осуществляться в срезе S[a:] , то есть начиная с символа с индексом a и до конца строки. Метод S.find(T, a, b) возращает индекс в строке S , а не индекс относительно среза.

3.2. Метод replace

Метод replace заменяет все вхождения одной строки на другую. Формат: S.replace(old, new) — заменить в строке S все вхождения подстроки old на подстроку new . Пример:

Если методу replace задать еще один параметр: S.replace(old, new, count) , то заменены будут не все вхождения, а только не больше, чем первые count из них.

3.3. Метод count

Подсчитывает количество вхождений одной строки в другую строку. Простейшая форма вызова S.count(T) возвращает число вхождений строки T внутри строки S . При этом подсчитываются только непересекающиеся вхождения, например:

При указании трех параметров , будет выполнен подсчет числа вхождений строки T в срезе S[a:b] .

Источник

Оцените статью