Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2021, 21:10   #1
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию Множество подобного текста кода заменить

здравствуйте, как при наличии такого кода:
Код:
                if sleva.startswith("['[1г]'") or \
                        sleva.startswith("['[2г]'") or \
                        sleva.startswith("['[3г]'") or \
                        sleva.startswith("['[4г]'") or \
                        sleva.startswith("['[1м]'") or \
                        sleva.startswith("['[2м]'") or \
                        sleva.startswith("['[3м]'") or \
                        sleva.startswith("['[1т]'") or \
                        sleva.startswith("['[5т]'") or \
                        sleva.startswith("['[50т]'") or \
                        sleva.startswith("['[100т]'") or \
                        sleva.startswith("['[150т]'") or \
                        sleva.startswith("['[200т]'") or \
                        sleva.startswith("['[300т]'") or \
                        sleva.startswith("['[400т]'") or \
                        sleva.startswith("['[500т]'") or \
                        sleva.startswith("['[5л]'") or \
                        sleva.startswith("['[6л]'") or \
                        sleva.startswith("['[7л]'") or \
                        sleva.startswith("['[8л]'") or \
                        sleva.startswith("['[10л]'") or \
                        sleva.startswith("['[15л]'") or \
                        sleva.startswith("['[20л]'") or \
                        sleva.startswith("['[25л]'") or \
                        sleva.startswith("['[12в]'") or \
                        sleva.startswith("['[14в]'") or \
                        sleva.startswith("['[16в]'") or \
                        sleva.startswith("['[18в]'") or \
                        sleva.startswith("['[55в]'") or \
                        sleva.startswith("['[60в]'") or \
                        sleva.startswith("['[65в]'") or \
                        sleva.startswith("['[585е]'") or \
                        sleva.startswith("['[585й]'") or \
                        sleva.startswith("['[585я]'") or \
                        sleva.startswith("['[р?]'"):
                    pass
                else:
                    print(fr'''что-то там''')
как по аналогии любезно предоставленного на этом форуме кода
Код:
is_sorted = lambda x: sorted(str(x)) == list(str(x))
print(is_sorted(13789)) # => True
print(is_sorted(34609)) # => False
создать что-то подобное в пару строк
Код:
is_or = ...............
чтобы был список того, что проверяется:
Код:
or = ["['[1г]'", "['[2г]'", "['[3г]'", "['[4г]'", "['[1м]'", "остальные элементы списка"]
и проверилось из списка
?
спасибо
Ципихович Эндрю вне форума Ответить с цитированием
Старый 11.12.2021, 22:00   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
if sleva.startswith(("['[1г]'", "['[2г]'", "['[3г]'",
    # все остальные
)):
    pass
else:
    print(fr'''что-то там''')
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.12.2021, 22:05   #3
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

нет слов......... лишние скобки () и в дамках...........
спасибо
Ципихович Эндрю вне форума Ответить с цитированием
Старый 12.12.2021, 10:41   #4
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

по аналогии, делаю несколько замен:
Код:
s1 = '123'
print(s1.replace(('1', '2'), '')) # ожидаю 3, но появляется ошибка
есть способ множественных замен?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 12.12.2021, 17:06   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Аналогии не работают. Нужно смотреть в документации, какие именно параметры разрешены. Можно в цикле последовательно делать replace, а можно перейти на регулярки:
Код:
import re
s1 = '123'
s1 = re.sub('|'.join(map(re.escape, ('1', '2'))), '', s1)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 12.12.2021, 18:03   #6
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

спасибо, понял
Ципихович Эндрю вне форума Ответить с цитированием
Старый 21.12.2021, 10:05   #7
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
startswith
это приговор, именно с ним работает? а без него, как?
Код:
sleva = "['[5л"
if sleva == (("['[5л", "['[2г]'", "['[3г]'")):
    print(fr'''пасс''')
else:
    print(fr'''что-то там''')
я рассчитывал увидеть пасс, как его увидеть? спасибо
Ципихович Эндрю вне форума Ответить с цитированием
Старый 21.12.2021, 19:25   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
sleva = "['[5л"
if sleva in ("['[5л", "['[2г]'", "['[3г]'"):
    print(fr'''пасс''')
else:
    print(fr'''что-то там''')
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 21.12.2021, 19:42   #9
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

точно, спасибо
Ципихович Эндрю вне форума Ответить с цитированием
Старый 23.12.2021, 09:00   #10
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

проверил и числами работает:
Код:
sleva = 3
if sleva in (1, 2, 3):
    print(fr'''пасс''')
else:
    print(fr'''что-то там''')
ответ пасс
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста заменить часть текста между повторяющимися знаками a7ex SQL, базы данных 1 16.01.2019 10:06
Заменить часть текста на формулу Word VBA bdfy Microsoft Office Word 4 28.10.2017 20:38
Как правильно заменить данную часть кода? Vova777 Общие вопросы Delphi 6 05.01.2013 00:11
Дано множество А, напечатать четные элементы, входящие в другое множество (Паскаль) Марийка92 Помощь студентам 4 03.04.2011 17:38
Открыть файл как Hex найти там некий участок кода, заменить его и сохранить AstraZak Общие вопросы C/C++ 10 05.03.2010 18:58