Уведомления

Группа в Telegram: @pythonsu

#1 Май 12, 2009 22:17:27

ke1pl
От:
Зарегистрирован: 2009-05-12
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна Помощь автоматизировать замену replace

Нужна Помощь автоматизировать замену replace
Данные в таком виде:

trans_list={'1040':'R01R','1041':'R02R','1042':'R03R'}
Существует строка msg
Надо в этой строке заменить все вложения(1040 и 1041 и 1042) на (R01R и R02R и R03R)
Я нашел решение:
msg = msg.replace('1040', trans_ru['1040'])
msg = msg.replace('1041', trans_ru['1041'])
msg = msg.replace('1042', trans_ru['1042'])
это подходит для 3х замен, а мне надо бы 64. Писать 64 строчки кода не вариант. Подскажите как реализовать в цикле…



Офлайн

#2 Май 13, 2009 09:41:38

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

Нужна Помощь автоматизировать замену replace

a=[('a','b'),('q','w')]
for x in a:
msg=msq.replace(x[0],x[1])
типа этого?



Офлайн

#3 Май 13, 2009 09:45:14

ke1pl
От:
Зарегистрирован: 2009-05-12
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна Помощь автоматизировать замену replace

может ты имел ввиду так?

a=[('a','b'),('q','w')]
for x in msg:
msg=msg.replace(x[0],x[1])
эмм… мне надо что б заменялось несколько символов



Отредактировано (Май 13, 2009 10:05:42)

Офлайн

#4 Май 13, 2009 10:22:33

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

Нужна Помощь автоматизировать замену replace

нет, именно мой вариант. применительно к твоему коду:

trans_list={'1040':'R01R','1041':'R02R','1042':'R03R'}
for x in trans_list:
msg=msq.replace(x,trans_list[x])
попробуй еще раз посмотреть на код и подумать над логикой работы



Отредактировано (Май 13, 2009 10:23:01)

Офлайн

#5 Май 13, 2009 10:38:16

ke1pl
От:
Зарегистрирован: 2009-05-12
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна Помощь автоматизировать замену replace

Согласен, сглупил.

Выдает ошибку

   File "e:\python\GOGO.PY", line 61, in trans_ru
for x in trans_ru:
TypeError: iteration over non-sequence
вот сама по себе функция
def trans_ru(msg):
msgout = str(msg)
for x in trans_ru:
msgout=msq.replace(x,trans_ru[x])
return msgout
Не пойму почему выбивает ошибку…



Отредактировано (Май 13, 2009 10:39:53)

Офлайн

#6 Май 13, 2009 10:40:26

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

Нужна Помощь автоматизировать замену replace

У вас какая версия питона то?

for x in trans_ru.keys():
попробуйте..
Добавлено:
Присмотрелся к вашему коду в последнем посте. Попробуйте опять представить логигу его работы. На бумажке расписать иногда помогает :)
trans_ru в вашем коде это функция а не словарь, как предпологалось ранее. Что на что заменять то?!



Отредактировано (Май 13, 2009 10:45:51)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version