Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Python) поиск текста в файле с помощью регулярок / 4 сообщений из 4, страница 1 из 1
12.08.2015, 12:18
    #39027733
Syrex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Python) поиск текста в файле с помощью регулярок
Добрый день.

Может кто подскажет, как сделать.
Необходимо получить список значений, которые располагаются в файле между символами '${' и '}'

примерСтроки в файле:
${var1}:${var2} otherText
${var1} otherText

На выходе:
${var1}
${var2}


В Expresso отрабатывает
Код: plaintext
\$\{(?<text>.+?)\}
- такая регулярка

Правда совпадения не удаляет.

Буду благодарен любой помощи (PS Python начал изучать недавно)
...
Рейтинг: 0 / 0
12.08.2015, 12:30
    #39027754
Syrex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Python) поиск текста в файле с помощью регулярок
Пока что сделал так, но на сколько это все правильно?

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
#!/usr/bin/python
import re

fh=open('/home/harvest/tmp/testCfg/cfgplan.xml','r')
fd=fh.read()
fh.close()

p=re.compile(r'\${.*?}')
found=p.findall(fd)

#uniq
foundU = list(set(found))
foundU.sort(key=found.index)

#for member in foundU:
#   print (member)

f = open('out.lst','w')
for item in foundU:
    f.write("%s\n" % item)
f.close()
...
Рейтинг: 0 / 0
13.08.2015, 06:25
    #39028265
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Python) поиск текста в файле с помощью регулярок
С файлами ты работаешь коряво, контекстные мэнеджеры надо использовать
Код: python
1.
2.
with open('/home/harvest/tmp/testCfg/cfgplan.xml', 'r') as f:
    .....


Вообще почитай доку, много лишних движений, например, вместо записи в цикле можно сделать так:
Код: python
1.
f.writelines(lines)



Вот это оверхед на ровном месте
Код: python
1.
2.
foundU = list(set(found))
foundU.sort(key=found.index)



Вот так будет работать гораздо быстрее, потому что поиск в списке - это перебор списка, а поиск во множестве - это поиск в хеш таблице.
Операция сортировки у тебя получается очень дорогой.
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
l = [1, 2, 3, 1, 5, 7, 8, 1]
s = set()
res = []
for x in l:
    if x not in s:
        res.append(x)
        s.add(x)
print res
...
Рейтинг: 0 / 0
13.08.2015, 17:50
    #39028965
Syrex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Python) поиск текста в файле с помощью регулярок
Спасибо большое за разъяснения
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Python) поиск текста в файле с помощью регулярок / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]