Я знаю, это кажется простой проблемой, но, пожалуйста, прочитайте мой вопрос.
Я хочу извлечь имена классов HTML, которые соответствуют следующему шаблону:
regex = re.compile(r'([\w-]+)-([#\w\d,%()\.]+)')
и записать егокак стиль CSS в другом файле.
для этого у меня есть словарь значений и свойств, которые мы собираемся использовать:
keyword = {
'c':'color',
'bg':'background',
'red':'#ed1a1a',
'blue':'#60a8ff'
#etc
}
пример:
html-файл: <div class="c-red bg-blue"> content </div>
вывод в файл css:
.c-red{
color: red;
}
.bg-blue{
background: blue;
}
и вот мой скрипт, который в основном делает это:
regex = re.compile(r'([\w-]+)-([#\w\d,%()\.]+)')
with open('index.html', 'r') as file:
with open('style.css', 'a+') as newfile:
lines = file.readlines()
for line in lines:
if 'class="' in line:
to_replace = regex.findall(line)
for key in to_replace:
prop=key[0]
value=key[1]
name='.'+prop+'-'+value
if prop and value in keyword:
var1 =('\n'+name+'{'+
'\n'+keyword[prop]+': '+
keyword[value]+';'+
'\n'+'}')
newfile.write(var1)
НО если у меня несколько похожих строк HTML, например:
<div class="c-red bg-blue"> content </div>
<div class="c-red bg-blue"> content2 </div>
<div class="c-red bg-blue"> content2 </div>
, сценарий будет писать команды CSS столько раз, сколько строк в файле HTML.
как мнепредотвратить это дублирование?
я пробовал:
var1=''
и
if var1 in newfile:
break
else:
newfile.write(var1)
, но ни один из них не работает.