Написал программу на питоне которая делает следующее - в файле index.html ищет все style="что то" и вытаскивает их в отдельный css файл, добавляя в теги соответствующее имя класса в css.
import re
import bs4
f = open("index.html","rb")
s = f.read()
s = s.decode('utf-8',errors='ignore')
match = re.findall("style=\"(.*?)\"", s)
match = dict(zip(match, match)).values()
if not(match is None):
ii = 1
cs=""
for ss in match:
ds="style=\"" + ss + "\""
newname = "class=\"cl" + str(ii) + "\""
clasn = "cl" + str(ii)
soup = bs4.BeautifulSoup(s, "html.parser")
tutu = soup.findAll(style=ss)
flag=0
for tgs in tutu:
clname = tgs.get('class',None)
if(clname==None):
s = s.replace(ds, newname)
else:
clnm=""
for tgn in clname:
clnm=clnm+" "+tgn
clnm=clnm.strip()
s = s.replace(" " + ds, "")
s = s.replace("class=\"" + clnm + "\"", "class=\"" + clnm + " " + clasn + "\"")
ss = ss.replace("; ",";\n")
cs = cs + "\n.cl" + str(ii) + "{\n" + ss + "\n}"
ii = ii + 1
f.close()
qq = open("css.css","w")
qq.write(str(cs))
qq.close
f2 = open("index2.html","w")
f2.write(s)
f2.close
Программа неплохо работает но при этом почему то (странно!!!) переменная не записывается в файл css.css. Если эту же переменную вывести через print то на экран выводится css код - все нормально, но в афйл переменная писаться не хочет, он остаётся пустым. При этом файл Index2.html прекрасно записывается
В чем магия?