Уведомления

Группа в Telegram: @pythonsu

#1 Июль 8, 2015 22:27:49

distortion
Зарегистрирован: 2015-07-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск в файле с последующим выводом строки

Здравствуйте. Написал на Python простенького бота для Telegram. Суть проблемы в следующем: есть txt файл с информацией в формате “{ключевое слово}информация”. В таком формате несколько строк. Как найти по ключевому слову строку и вывести ее пользователю? Пробовал с простым поиском, он ищет просто слово. Не могу понять, как добавить фильтр на {ключевое слово} с учетом скобок. И как вывести потом именно строку, а не только искомое слово.

Офлайн

#2 Июль 8, 2015 22:50:21

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Поиск в файле с последующим выводом строки

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

Офлайн

#3 Июль 8, 2015 23:18:49

distortion
Зарегистрирован: 2015-07-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск в файле с последующим выводом строки


Спасибо большое! Работает. Только теперь возник ещё один вопрос. А как вывести содержимое строки без {ключевое слово}?

Офлайн

#4 Июль 8, 2015 23:26:41

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Поиск в файле с последующим выводом строки

distortion
значит написали бота , а с такой задачей не справились? серьезно?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Июль 8, 2015 23:34:30

distortion
Зарегистрирован: 2015-07-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск в файле с последующим выводом строки

Не совсем написал. Просто исправил код, который нашёл на Хабре и добавил свои функции. С Python почти не знаком был, узучал по мере необходимости. Такого фильтра не видел - как следствие не изучал ещё. Да и написав бота с нуля, я бы не обращался в ветку “для новичков”. Мне так кажется)

Офлайн

#6 Июль 9, 2015 04:50:34

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Поиск в файле с последующим выводом строки

distortion
Это технический форум, здесь надо быть внимательным к тому что пишешь)
вместо

print line
можно написать так:
print line.split('}')[-1]
Строку которая была найдена из кода в прошлом посте, будет разбита на составляющие, в качестве критерия будет служить символ закрывающейся фигурной скобки { , а с помощью индексации полученного списка будет выведен последний элемент. Так как структура простая этого будет достаточно.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Июль 9, 2015 08:43:56

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Поиск в файле с последующим выводом строки

:) :) :) Сейчас модно применять функциональный стиль. Его любители ск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')]



Офлайн

#8 Июль 9, 2015 14:18:10

distortion
Зарегистрирован: 2015-07-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск в файле с последующим выводом строки

JOHN_16
Спасибо! Все работает! И еще один вопрос, если можно . Как сделать, чтоб поиск не учитывал регистр?

Офлайн

#9 Июль 9, 2015 14:39:55

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Поиск в файле с последующим выводом строки

distortion
у строк есть метод который переводит регистр. Например как то так :

if line.lower().startswith('{keyword}')



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Июль 9, 2015 15:03:24

distortion
Зарегистрирован: 2015-07-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск в файле с последующим выводом строки

‘str’ object has no attribute ‘line’ ошибка появляется

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version