@fantom_ask

Как изменить произвольный параметр после определенного слова в строке?

У меня есть строка
text = 'background:red;border-color:rgba(255,255,255,0);color:#0ff;'

и я хочу изменить в ней значение после слова color но я плохо разбираюсь в регулярных выражениях
print(re.findall(r'\w+', text))
Единственое что я придумал это
for x in self.rad.styleSheet().split(';') :
	valx = x.split(':')
	#print(valx)
	X_1 = valx[0]
	try: 
		X_2 = valx[1]
	except:
		X_2 = None
	if valx[0] == "color" :
		X_2 = "blue"
	
	if not X_2 == None :
		string = string + X_1 + ":" + X_2 + ";"
print(string)
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn
Если шаблон строки всегда один и тот же, без исключений, то можно и без регулярок:
In [1]: text = 'background:red;border-color:rgba(255,255,255,0);color:#0ff;'

In [2]: text = text[:text.find(';color:')] + '#FFFFF;'

In [3]: text
Out[3]: 'background:red;border-color:rgba(255,255,255,0)#FFFFF;'


С использованием регулярного выражения:
In [1]: import re

In [2]: text = 'background:red;border-color:rgba(255,255,255,0);color:#0ff;'

In [3]: to_replace = '#FFFFF'

In [4]: text = text.replace(re.search(r'(^|[^-])color:(.*?)\;', text).group(2), to_replace)

In [5]: text
Out[5]: 'background:red;border-color:rgba(255,255,255,0);color:#FFFFF;'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы