Как найти номер строки в txt

Finding the line number of a specific string and its substring is a common operation performed by text editors or any application with some level of text processing capabilities. 

In this article, you will learn how to find line number of a specific string or substring or word from a .txt (plain text) file using Python. 

The problem in hand could be stretched to include different methods. i.e. The line number of the first occurrence of the substring/string could be found, or the line numbers at which the string/substring exists could be found. This article will be going over the latter one.

For demonstration the following text file would be used:

 Finding single word in a text file

In this part, we will search for a single word in the text file. Let’s see the code here.

Python3

filename = r"test1.txt"

key = "the"

with open(filename) as file:

    lines = file.readlines()

for number, line in enumerate(lines, 1): 

    if key in line: 

        print(f'{key} is at line {number}'

Output:

"the" is at line 2
"the" is at line 5
"the" is at line 7

Explanation:

Firstly the variables filename and key were initialized. The variable filename stores the path (absolute or relative) of the text file. The variable key stores the string that is to be searched. Afterward, the file at the path specified by the filename variable is opened for the read operation. All the lines within the files are read and stored in the variable lines. A for-loop is ran where this variable is passed through the enumerate function to get each line along with its number as the condition. Therefore, the loop would execute until all the elements of the lines list are exhausted. Then a condition is placed inside the loop, which searches for the key within the line using the in operator. If the presence is found, the line at which the key is found is printed, and this process repeats until all the lines within the file are checked. 

Finding different words in a text file

In this part, we will search for a different words in the text file. Let’s see the code here.

Python3

filename = r"test1.txt"

key = ["the", "and", "or", "to"]

with open(filename) as file:

    lines = file.readlines()

for x in key:

    for number, line in enumerate(lines, 1):     

        if x in line: 

            print(f'{x} is at line {number}'

Output:

the is at line 2
the is at line 5
the is at line 7
and is at line 3
and is at line 4
and is at line 5
and is at line 6
or is at line 2
or is at line 3
or is at line 4
or is at line 5
or is at line 6
or is at line 7
to is at line 2
to is at line 3
to is at line 5

Explanation:

The working logic of the code is safe as the aforementioned one. The only difference being that we are supplying more than 1 key to be searched into the file in a loop. Therefore, in this way we can find many different substrings within the file, at the same time.

Finding different substrings in a text file

In this part, we will search for  substring in the text file. Let’s see the code here.

Python3

def search(key, file):

    with open(filename) as file:

        lines = file.readlines()

    for number, line in enumerate(lines, 1):

        if key in line:

            print(f'{key} is at line {number}')

filename = r"test1.txt"

key = "in hand"

string_list = list(key.split())

for item in string_list:

    search(item, filename)

Output:

in is at line 1
in is at line 3
hand is at line 3

Last Updated :
21 Nov, 2022

Like Article

Save Article

У меня есть 2 файла. В одном и в другом построчно написаны данные. Мне нужно взять определенную строку в одном файле и по номеру строки найти данные в другом файле (может это можно сделать и не по номеру строки). Можете объяснить как это лучше сделать в плане кода. При том что в файлах разные данные и каждая строка одного файла связана с каждой строкой другого. Мне нужно взять данные из второго файла, зная в каком ряду нужные мне данные в первом файле.

Первый файл:

14CaBzRbZDuGJCAdu9CZsbrCfyv4K7f7sf;31 
0xd4FD252d7D2C9479a8d616F510eAC6243B5DDdf9;3 
3Dxvjt7N8sbeUoTbASF5dBqEeSMc1o7Pk1;12 
0x944680402B2Ba554f978714b6039755ED10e7466;8

Второй файл:

0.0
0.0
7.91778246
0.5476858867775038

задан 4 авг 2020 в 8:15

fantazy's user avatar

10

попробуйте так:

line = 2

with open("fil1_1.txt", "r") as f1, open("fil1_2.txt", "r") as f2:
    rows_1 = f1.readlines()
    rows_2 = f2.readlines()

if len(rows_1) > line and len(rows_2) > line:
    print(f'стоке                {rows_1[line]}'
          f'соответствует строка {rows_2[line]} (соответствие по номеру записи)')

А как мне узнать номер строки в первом файле? Или может как то по другому можно решить вопрос?

rows_1 = ['item1', 'item2', 'item3', 'item4',]

rows_1.index('item1')  # 0
rows_1.index('item2')  # 1
rows_1.index('item3')  # 2
# ...

ответ дан 4 авг 2020 в 9:30

S. Nick's user avatar

S. NickS. Nick

70.2k96 золотых знаков36 серебряных знаков55 бронзовых знаков

6

Если файл большой

with open("first file", "r") as first, open("second file", "r") as second:
    while True:
        try:
            f_line = next(first).strip()
            s_line = next(second).strip()
            print(f_line, s_line)
        except StopIteration:
            exit(0)

Если не большой)

with open("first file", "r") as first, open("second file", "r") as second:
    one = (x.strip() for x in first)
    two = (x.strip() for x in second)
    coins = dict(zip(one, two))

print(coins)

ответ дан 6 авг 2020 в 9:50

alex's user avatar

alexalex

2,6775 серебряных знаков12 бронзовых знаков

Голосование за лучший ответ

Данил Хаустов

Просветленный

(27079)


8 лет назад

установи notepad++, там строки пронумерованы
сам фрагмент найдешь стандартно: через ctrl+f

Дмитрий ДмитрийУченик (98)

8 лет назад

Скорее всего вы не так поняли поставленный вопрос… Поиск строки должен осуществляться путем использования PHP.

Данил Хаустов
Просветленный
(27079)
конечно не правильно, как спросил так и ответил, если б написал, что тебе код нужен, я б не отвечал даже, я ж не програмист))

Добрый вечер! Подскажите есть ли какой то оператор который будет искать заданный текст в текстовом документе и выводить в какой строке он это нашёл. И если не нашёл изменял переменную? Или это всё таки надо делать на циклах. Если туплю не бейте. Мне 13.


  • Вопрос задан

    более трёх лет назад

  • 4957 просмотров

Используйте enumerate():

with open('text.txt', 'rt') as file:
    for index, line in enumerate(file):
        if pattern in line:
            print(index)

Причем вторым параметром в enumerate можно передать номер начала отсчёта – например, начать с 1, а не с нуля (по умолчанию). В переменной index будет номер текущей строки.

Пригласить эксперта

Отдельного нет, но там итак не сложно. Открыть документ, инициализировать счетчик и считывать построчно, проверяя вхождение текста в считанную строку, пока не найдем. Примерно так

search_string = 'mytext'
with open("myfile.txt") as f:
	n = 0
	for line in f:
		n += 1
		if search_string in line:
			print(search_string, 'found on line', n)


  • Показать ещё
    Загружается…

20 мая 2023, в 01:15

100000 руб./за проект

20 мая 2023, в 00:11

10000 руб./за проект

19 мая 2023, в 23:57

40000 руб./за проект

Минуточку внимания

Текстовые редакторы могут быть как простыми, так и сложными. Сложными настолько, что фактически «перестают» быть текстовыми редакторами, переходя на принципиально более высокий уровень работы с данными. Примером такого сложного функционального текстового редактора может служить Microsoft Office, самым же простым приложением для работы с текстом продолжает оставаться штатный Блокнот Windows.

Главным достоинством этого приложения является его легкость и простота, поддержка кодировок ANSI, UTF-8, UTF-16 LE/BE и UTF-8 со спецификацией.

Блокнот можно использовать для редактирования файлов стилей и скриптов, но здесь начинающий пользователь может столкнуться с трудностями. Допустим, он прочел в инструкции, что на такой-то строке нужно заменить такой-то фрагмент кода.

Но как определить номер строки, если Блокнот эти номера не отображает?

Очень просто.

В Windows 10 в Блокнот была добавлена новая функция строка состояния, которая отображает не только номер строки, на которую установлен курсор, но и номер столбца.

Строка состояния

Располагается строка состояния у нижней границы окна, если у вас ее нет, зайдите в меню «Вид» и включите ее.

Вид

Теперь, перемещаясь по строкам с помощью клавиш-стрелок вверх-вниз, вы сможете определять номер строки. Если же файл слишком длинный, для поиска нужного фрагмента можно всегда воспользоваться поиском, а затем сравнить номер строки в файле с номером строки в инструкции, удостоверившись, что вы нашли именно тот фрагмент, о котором идет речь.

А еще у Блокнота есть малоизвестная фишка, которая позволит вам скрыть набираемый на клавиатуре текст от чужих глаз.

Запустите Блокнот через командную строку или PowerShell с ключом setup, вот так: notepad /.setup и тут же начинайте печатать в открывшемся окне Блокнота.

PowerShell

Содержимое окна видимо будет оставаться пустым,

Блокнот

но когда вы нажмете Ctrl + W и сохраните файл, а затем откроете его, то найдете в нём набранный вслепую текст.

Сохранить файл

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

Загрузка…

Добавить комментарий