Поиск в текстовом файле

Grundik

Новичок
Пользователь
Апр 21, 2023
10
0
1
День Добрый!
Искать значение в текстовом файле я вроде разобрался как, а вот как брать строку из тектового файла и искать ее в другом файле что то не получается. Прошу помогите разобраться. Если я правильно понимаю то этот код должен брать первую строку из файла "6s.txt" и сравнивать ее с каждой строкой файла "tat.txt" и если он находит совпадение то пишет что 'Nashel'. Но что то не получаю я такого результата.
Python:
with open("6s.txt", "r", encoding='utf-8') as my_file:
    for line in my_file:
        print(line)
        input()
        with open("tat.txt", "r", encoding='utf-8') as ku_file:
            for ku_line in ku_file:
                print(ku_line)
                input()
                if line in ku_line:
                    print('Nashel')
 

Вложения

  • 6s.txt
    597 байт · Просмотры: 5
  • tat.txt
    533 байт · Просмотры: 5

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
Python:
with open("6s.txt", "r", encoding='utf-8') as my_file:
    lst_6s = my_file.readlines()
with open("tat.txt", "r", encoding='utf-8') as ku_file:
    lst_tat = ku_file.readlines()

for _6s in lst_6s:
    for tat in lst_tat:
        if _6s.strip() in tat:
            print('Nashel')
 

Grundik

Новичок
Пользователь
Апр 21, 2023
10
0
1
Python:
with open("6s.txt", "r", encoding='utf-8') as my_file:
    lst_6s = my_file.readlines()
with open("tat.txt", "r", encoding='utf-8') as ku_file:
    lst_tat = ku_file.readlines()

for _6s in lst_6s:
    for tat in lst_tat:
        if _6s.strip() in tat:
            print('Nashel')
Спасибо. Нехватало strip
 

Grundik

Новичок
Пользователь
Апр 21, 2023
10
0
1
Еще одно. Не понял что не так у меня с отступами ?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
Еще одно. Не понял что не так у меня с отступами ?
лучше минимизировать работу с файлами, открыл взял закрыл
у вас первый файл открыт на протяжении всего выполнения кода
 

Grundik

Новичок
Пользователь
Апр 21, 2023
10
0
1
Еще раз спасибо.
 

Grundik

Новичок
Пользователь
Апр 21, 2023
10
0
1
Просто печаль для не разумного человеса. Пытаюсь сделать так. На выходе должен получиться файл с тем же содержимым как tat.txt и после строки в которой найден текст добавлено слова Nashel. Но не могу разобраться как. Получается файл раздуд копиями.
Python:
with open("6s.txt", "r", encoding='utf-8') as my_file:
    lst_6s = my_file.readlines()
with open("tat.txt", "r", encoding='utf-8') as ku_file:
    lst_tat = ku_file.readlines()
new = open('new.txt', 'w', encoding='utf-8')   

for _6s in lst_6s:
    for tat in lst_tat:
        new.write(tat)
        if _6s.strip() in tat:
            print('Nashel')
new.close()

Мне кажется что я в корень выбрал не то направление для этой цели. Прошу помочь и направить (желательно не на......)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
писать в файл надо в условии, где print('Nashel')

Python:
with open("6s.txt", "r", encoding='utf-8') as my_file:
    lst_6s = my_file.readlines()
with open("tat.txt", "r", encoding='utf-8') as ku_file:
    lst_tat = ku_file.readlines()
with open('new.txt', 'w', encoding='utf-8') as new_file:
    for _6s in lst_6s:
        for tat in lst_tat:
            if _6s.strip() in tat:
                print('Nashel')
                new_file.write(tat + " Nashel")
 

Grundik

Новичок
Пользователь
Апр 21, 2023
10
0
1
Если так, то в файл записывается только то что лежит в переменных при выполнении условия, а мене надо чтоб в файл записывались все строки поочередно и при выполнении условия добавилось "Nashel". Что бы вывод получился примерно таким.

<Map user="admin" pc="Куы-0109" owner="фыва.цуа3">
<Devices>
<Device id="1" name="Куы-0109" address="192.168.0.18:5900" method="ICMP" logging="Minimum" refresh-rate="very-seldom" show-status="true" type-id="Laptop" x="2013" y="931" z="71" layer="0">
<Building>АБК</Building>
<City>а32а23 ГГтслуц</City>
<FullName>фывафыв фываупроро6 ыолккуцлке</FullName>
Nashel
<Job>Грузчик по офису</Job>
<Room>Грузчик</Room>
</Device
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
ну голову то приложите чучуть

Python:
with open("6s.txt", "r", encoding='utf-8') as my_file:
    lst_6s = my_file.readlines()
with open("tat.txt", "r", encoding='utf-8') as ku_file:
    lst_tat = ku_file.readlines()
with open('new.txt', 'w', encoding='utf-8') as new_file:
    for _6s in lst_6s:
        for tat in lst_tat:
            if _6s.strip() in tat:
                print('Nashel')
                new_file.write(tat.strip() + " Nashel\n")
            else:
                new_file.write(tat)
 
  • Мне нравится
Реакции: Grundik

Grundik

Новичок
Пользователь
Апр 21, 2023
10
0
1
Так я пробовал. Получается Хаос. Он раздувает файл ровно в 18 раз. Дополняя его количеством строк равное количеству строк в файле 6s.txt. Я понимаю что надо записывать в файл в первом цикле For но в нем нет переменной tat.
 

Grundik

Новичок
Пользователь
Апр 21, 2023
10
0
1
Спасибо дошло.
надо было поменять местами условия
Python:
with open("6s.txt", "r", encoding='utf-8') as my_file:
    lst_6s = my_file.readlines()
with open("tat.txt", "r", encoding='utf-8') as ku_file:
    lst_tat = ku_file.readlines()
with open('new.txt', 'w', encoding='utf-8') as new_file:
    for tat in lst_tat:
        new_file.write(tat)
        for _6s in lst_6s:
            if _6s.strip() in tat:
                print('Nashel')
                new_file.write(tat.strip() + " Nashel\n")
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
Спасибо дошло.
надо было поменять местами условия
Python:
with open("6s.txt", "r", encoding='utf-8') as my_file:
    lst_6s = my_file.readlines()
with open("tat.txt", "r", encoding='utf-8') as ku_file:
    lst_tat = ku_file.readlines()
with open('new.txt', 'w', encoding='utf-8') as new_file:
    for tat in lst_tat:
        new_file.write(tat)
        for _6s in lst_6s:
            if _6s.strip() in tat:
                print('Nashel')
                new_file.write(tat.strip() + " Nashel\n")
таким образом ваш файл не совпадает с изначальным


можно так

Python:
nashel = False
result = ""

with open("6s.txt", "r", encoding='utf-8') as my_file:
    lst_6s = my_file.readlines()
with open("tat.txt", "r", encoding='utf-8') as ku_file:
    lst_tat = ku_file.readlines()

for _6s in lst_6s:
    for tat in lst_tat:
        if _6s.strip() in tat:
            print('Nashel')
            result += tat.strip() + " Nashel\n"
            nashel = True
        else:
            result += tat
    if nashel:
        break
    else:
        result = ""

with open("new.txt", "w", encoding="utf-8") as new_file:
    new_file.write(result)
 
  • Мне нравится
Реакции: Grundik

Grundik

Новичок
Пользователь
Апр 21, 2023
10
0
1
Спасибо большое. С Вашим кодом работает шустрее гораздо.
 

Форум IT Специалистов