Найти - Пользователи
Полная версия: Поиск в файле с последующим выводом строки
Начало » Python для новичков » Поиск в файле с последующим выводом строки
1 2
distortion
Здравствуйте. Написал на Python простенького бота для Telegram. Суть проблемы в следующем: есть txt файл с информацией в формате “{ключевое слово}информация”. В таком формате несколько строк. Как найти по ключевому слову строку и вывести ее пользователю? Пробовал с простым поиском, он ищет просто слово. Не могу понять, как добавить фильтр на {ключевое слово} с учетом скобок. И как вывести потом именно строку, а не только искомое слово.
botinag
tst.txt:
{keyword}info
123
{keyword}info2
fgfd
23fg
>>> with open(r'c:\tst.txt', 'r') as f:
... for line in f.readlines():
... if line.startswith('{keyword}'):
... print line
...
{keyword}info

{keyword}info2
distortion

Спасибо большое! Работает. Только теперь возник ещё один вопрос. А как вывести содержимое строки без {ключевое слово}?
JOHN_16
distortion
значит написали бота , а с такой задачей не справились? серьезно?
distortion
Не совсем написал. Просто исправил код, который нашёл на Хабре и добавил свои функции. С Python почти не знаком был, узучал по мере необходимости. Такого фильтра не видел - как следствие не изучал ещё. Да и написав бота с нуля, я бы не обращался в ветку “для новичков”. Мне так кажется)
JOHN_16
distortion
Это технический форум, здесь надо быть внимательным к тому что пишешь)
вместо
print line
можно написать так:
print line.split('}')[-1]
Строку которая была найдена из кода в прошлом посте, будет разбита на составляющие, в качестве критерия будет служить символ закрывающейся фигурной скобки { , а с помощью индексации полученного списка будет выведен последний элемент. Так как структура простая этого будет достаточно.
doza_and
:) :) :) Сейчас модно применять функциональный стиль. Его любители скfжут что ваша задача решается в одну строчку. Но поскольку язык питон не функциональный :( :( :( то строчки получается 2

import re
print(re.findall(r"\{(\w+)\}(\w+)",open("a.txt","r").read()))

{keyword}info0 adda {keyword}info1
123
{keywordx}info2
fgfd
23fg
>>> 
[('keyword', 'info0'), ('keyword', 'info1'), ('keywordx', 'info2')]
distortion
JOHN_16
Спасибо! Все работает! И еще один вопрос, если можно . Как сделать, чтоб поиск не учитывал регистр?
JOHN_16
distortion
у строк есть метод который переводит регистр. Например как то так :
if line.lower().startswith('{keyword}')
distortion
‘str’ object has no attribute ‘line’ ошибка появляется
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB