我有以下脚本,它循环访问css规则的文本文件,并将每个规则及其属性存储在字典中(代码欢迎的改进,我只有刚开始使用Python):Python - 在字典中查找重复对/值
findGroups.py
import sys
source = sys.argv[1]
temp = open('pythonTestFile.txt', 'w+')
di = {}
with open(source, 'r') as infile:
for line in infile:
# if line starts with . or #, contains _ or - between
# words and has a space and opening brace(ie is css rule name)
if re.search('((([\.\-\'])?\w+\s?\{', line):
key = line.replace("{", "")
di[key] = []
line = next(file)
while "}" not in line:
# remove trailing whitespace and \n
line = ' '.join(line.split())
di[key].append(line)
line = next(infile)
temp.close();
的Source.txt
* {
min-height: 1000px;
overflow: hidden;
}
.leftContainerDiv {
font-family: Helvetica;
font-size: 10px;
background: white;
}
#cs_ht_panel{
font-family:10px;
display:block;
font-family:Helvetica;
width:auto;
}
//...etc
最好,我想输出看起来像这样(为便于阅读,建议也欢迎):
pythonTestFile.txt
Group 1, count(2) - font-family: Helvetica; + font-size: 10px;
Group 2: //...etc
我想现在要做的就是找出哪些CSS属性是重复出现的组,例如,如果font-size:10px和font-family:Helvetica在规则中一起出现,则此组是否出现在其他任何规则中,并且出现了多少次。
我不完全知道在哪里与此去,我无法弄清楚如何甚至开始某种比较算法,或者如果字典是正确的数据结构来存储文本。
编辑:在回应评论时,我无法使用第三方库。这个脚本将在Red Hat VM上使用,并且只有预先认可的软件才能被推送到这些上,我无法下载库或软件包
我不介意downvote,但至少解释为什么这个问题downvoted,以便我可以修复它 – jbailie1991
你的努力确实是写一个CSS解析器。是不是像tinycss(https://pythonhosted.org/tinycss/)是一个很好的起点,并修改或使用它的API? – gabhijit
我将在此问题中添加更多详细信息,但不能使用第三方库。这适用于红帽虚拟机,并且我们可以在这些虚拟机上使用哪些软件有严重的限制。基本上我们不能下载任何第三方软件,我们使用的任何东西都被各种人预批准并推送到虚拟机上,所以我只能真正访问任何已经安装在红帽实例上的编程语言或工具。我同意,也许手滚动/修改/使用现有的CSS解析器可以使这个更简单,但不幸的是它不是一个选项 – jbailie1991