2010-04-19 2 views
2

Я хочу получить %tagname% из файла и скопировать их только в словарь tagname в python.Как извлечь тэги с тэгами

+2

Что у вас до сих пор , и как это не работает? –

+0

Как выглядит _% тэг% _? –

+0

это AZ, любой длины – DukeNukem

ответ

7

это поможет вам список тегов

re.findall("%([^%]+)%", text) 
2

Чтобы получить список тегов, вы можете использовать нежадную версию оператора +, который имеет преимущество в том, просто:

re.findall('%(.+?)%', text) 

В самом деле, .+?% находит все символы любого типа (тег), и останавливает как только% найден (это «не жадный» часть).

В тесте на скорость ниже, нежадная версия этого ответа медленнее, чем «не другой% знак» версия с коэффициентом почти 2, хотя:

python -m timeit -s'import re; t="%t1% lkj lkj %long tag% lkj lkj"*1000' 're.findall("%([^%]+)%", t)' 
1000 loops, best of 3: 874 usec per loop 

python -m timeit -s'import re; t="%t1% lkj lkj %long tag% lkj lkj"*1000' 're.findall("%(.+?)%", t)' 
1000 loops, best of 3: 1.43 msec per loop 
+0

все же * много * нет эффективный. Лучше всего избегать использования неживых операторов в местах, где достаточно простого. –

+0

@ Jared: Вы правы, не жадная версия может быть медленнее. Однако я считаю, что не жадная версия понятна, но это может быть вопросом личного вкуса. :) – EOL