Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 21, 2023 18:13:47

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

замена двойного символа

раз два III* четыре пять - зайчик vIshel pogulat
раз два (дата3) четыре пять - зайчик v(дата2)shel pogulat

Офлайн

#2 Янв. 21, 2023 19:52:13

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  122  -
Профиль   Отправить e-mail  

замена двойного символа

Genabox
поэтому при замене все букв по азбуке римские цифры нужно видить как 1 символ для замены - я его пометил звездочкой для этого
так одной звездочки мало для этого, ты html код видел? или даже на этом форуме код думаешь почему в рамке появляется, потому что он в тегах с двух сторон
[code python]так понятно что это код, а не текст[/code]

Отредактировано xam1816 (Янв. 21, 2023 19:52:58)

Офлайн

#3 Янв. 21, 2023 19:56:35

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

замена двойного символа

да у меня вопрос по логике а не покоду

Офлайн

#4 Янв. 21, 2023 20:43:04

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  122  -
Профиль   Отправить e-mail  

замена двойного символа

Genabox
да у меня вопрос по логике а не покоду
я тебе про логику и говорю, почему ты делаешь III*, а не к примеру <tag>III</tag>

  
import re
dct = {
    'III\*': '(data3)',
    'I': '(data2)',
}
s = 'раз два III* четыре пять - зайчик vIshel pogulatIII*'
def process(text, dct):
    for k, v in dct.items():
        text = re.sub(k, v, text)
    return text
print(s)
res = process(s, dct)
print(res)

 
раз два III* четыре пять - зайчик vIshel pogulatIII*
раз два (data3) четыре пять - зайчик v(data2)shel pogulat(data3)

Офлайн

#5 Янв. 21, 2023 20:55:32

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

замена двойного символа

списибо
не работает это именно то о чем я испрашивал
как написать правило объхода замены символа

 import re
dct = {
    'I': '(data2)',
    'I I I / *': '(data3)'
    
}
s = 'р а з д в а I I I * ч е т ы р е п я т ь   -   з а й ч и к  v I s h e l   p o g u l a t I I I *'
def process(text, dct):
    for k, v in dct.items():
        text = re.sub(k, v, text)
    return text
print(s)
res = process(s, dct)
print(res)

р а з д в а I I I * ч е т ы р е п я т ь - з а й ч и к v I s h e l p o g u l a t I I I *
р а з д в а (data2) (data2) (data2) * ч е т ы р е п я т ь - з а й ч и к v (data2) s h e l p o g u l a t (data2) (data2) (data2) *

<tag>III</tag>
ну оно раздолбает этот таг по символам….

еще у меня в коде используется правило пробел между символами и 2 пробела между словами (для транслитизации в экзо азбуку)

Отредактировано Genabox (Янв. 21, 2023 21:03:13)

Офлайн

#6 Янв. 21, 2023 21:22:59

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  122  -
Профиль   Отправить e-mail  

замена двойного символа

Genabox
ну оно раздолбает этот таг по символам….
перед обработкой строку можно привести в нормальный вид

код который я скинул не многофункциональный, в словаре должна строгая последовательность, что в первую очередь меняется, что во вторую

  
import re
dct = {
    'I I I \*': '(data3)',
    'I': '(data2)',
}
s = 'р а з д в а I I I * ч е т ы р е п я т ь   -   з а й ч и к  v I s h e l   p o g u l a t I I I *'
def process(text, dct):
    for k, v in dct.items():
        text = re.sub(k, v, text)
    return text
print(s)
res = process(s, dct)
print(res)
 
р а з д в а I I I * ч е т ы р е п я т ь - з а й ч и к v I s h e l p o g u l a t I I I *
р а з д в а (data3) ч е т ы р е п я т ь - з а й ч и к v (data2) s h e l p o g u l a t (data3)

Process finished with exit code 0

Офлайн

#7 Янв. 21, 2023 22:00:05

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

замена двойного символа

что в первую очередь меняется, что во вторую
так и есть

Офлайн

#8 Янв. 21, 2023 22:07:26

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

замена двойного символа

 import re
dct = {
    'I I I': '(data3)',
    'I': '(data2)',
}
s = 'I р а з д в а I I I ч е т ы р е п я т ь   -   з а й ч и к  v I s h e l   p o g u l a t I I I '
def process(text, dct):
    for k, v in dct.items():
        text = re.sub(k, v, text)
    return text
print(s)
res = process(s, dct)
print(res)

I р а з д в а I I I ч е т ы р е п я т ь - з а й ч и к v I s h e l p o g u l a t I I I
(data2) р а з д в а (data3) ч е т ы р е п я т ь - з а й ч и к v (data2) s h e l p o g u l a t (data3)

да так работает, я не понимаю как он это распознает

тоесть получается что в словаре нужно весь римский алфавит писать перед основным алфавитом?

Отредактировано Genabox (Янв. 21, 2023 22:09:23)

Офлайн

#9 Янв. 21, 2023 22:38:15

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

замена двойного символа

нужно искать текст между тэгами и его заменять
а потом заенять все остальное за исключением этих тэгов

например <rom>I</rom>

спасибо за помощь, еще потом покопаю

Отредактировано Genabox (Янв. 21, 2023 22:39:42)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version