Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 20, 2009 21:03:01

jartasa
От:
Зарегистрирован: 2009-09-20
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимальный алгоритм

Подскажите оптимальный алгоритм замены тэгов в тексте.К примеру:имеется текст(100мб) в нём нужно заменить несколько тегов на слова(#тег1# - слово 1,#тег2# - слово 2).Тэги лежат в файле вида:тег;переменная,слова генерируется походу работы скрипта.В питоне новичок прошу не пинать :) Нужен самый оптимальный алго.



Отредактировано (Сен. 20, 2009 21:06:19)

Офлайн

#2 Сен. 20, 2009 23:50:24

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Оптимальный алгоритм

Оптимальный по скорости?
А при чём тут переменные в файле с тегами?
Читаем/пишем в файл функцию замены предлагаю написать самому.

def func(line):
тут функция замены
return line

out = open('outfile.txt','w') #файл с заменёнными словами
for line in open('somefile.txt','r'): # читаем исходный файл
out.write(func(line))
out.close()

Офлайн

#3 Сен. 21, 2009 15:16:22

jartasa
От:
Зарегистрирован: 2009-09-20
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимальный алгоритм

Интересует именно функция замены тэгов,открыть и прочитать файл я и сам смогу.



Офлайн

#4 Сен. 21, 2009 15:40:31

GDK
От:
Зарегистрирован: 2009-08-21
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимальный алгоритм

Заменить надо в одном файле один раз и больше никогда? Тогда проще это сделать в текстовом редакторе с функцией поиска и замены текста. Будет проще наверное чем скрипт писать.



Офлайн

#5 Сен. 21, 2009 15:56:29

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Оптимальный алгоритм

GDK
Заменить надо в одном файле один раз и больше никогда? Тогда проще это сделать в текстовом редакторе с функцией поиска и замены текста. Будет проще наверное чем скрипт писать.
Ну тут был задан конкретный вопрос.
Самое простое это метод replace (читаем учебник)
Можно и регулярками…



Офлайн

#6 Сен. 21, 2009 17:21:52

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Оптимальный алгоритм

Интересует именно функция замены тэгов,открыть и прочитать файл я и сам смогу.
1. Я не знаю кто что может, я не телепат.
2. RTFM

Офлайн

#7 Сен. 22, 2009 10:38:51

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Оптимальный алгоритм

Вообщем отвечу за топикстартера :)
Есть бааальшой файл, где есть всякие теги, типа #tag1#
Есть маленький файл типа:

#tag1#= var1
#tag2#= var2
...
необходимо в бааальшом файле заменить теги на значения переменных, имена которых мы берем из маленького файла.
Как то так?
Проблема то в чем?
Возьми код, который тебе предложил Ferroman. Далее приведи свой текстовый файл к словарю например, где ключи, это теги, а значения это имена переменных (ConfigParser'ом например, зависит от того, какой структуры он у тебя. И что то типа этого:
def func(line):
for v in replace_dict:
line=line.replace(v,eval(replace_dict[v]))
return line
я правильно тебя понял?



Отредактировано (Сен. 22, 2009 10:42:01)

Офлайн

#8 Сен. 23, 2009 22:00:31

jartasa
От:
Зарегистрирован: 2009-09-20
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимальный алгоритм

Спасибо,то что надо.



Офлайн

#9 Сен. 28, 2009 21:40:34

jartasa
От:
Зарегистрирован: 2009-09-20
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимальный алгоритм

Как подсчитать количество одинаковых тэгов в тексте ?



Офлайн

#10 Сен. 28, 2009 21:51:37

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимальный алгоритм

jartasa
Как подсчитать количество одинаковых тэгов в тексте ?
from BeautifulSoup import BeautifulSoup

text = "<b>dsfasdf</b> <c>dsfasdfasdf</c> <b>dsfasdf</b> <b param=1>asd</b> <b param=1>dsfadsf</b>"
soup = BeautifulSoup(text)
print len(soup.findAll("b", param=1))



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version