gpt4 book ai didi

python - 如何跳过文件中已经存在的行?

转载 作者:行者123 更新时间:2023-11-28 22:12:34 25 4
gpt4 key购买 nike

我知道,这似乎是一个简单的问题,但请阅读我的问题。

我想提取符合以下模式的 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>

脚本将编写与 HTML 文件中的字符串一样多的 CSS 命令。

如何防止这种重复?

我试过:

var1=''

if var1 in newfile:
break
else:
newfile.write(var1)

但这些都不起作用。

最佳答案

在你写之前添加追加到一个集合。然后在编写之前简单地检查设置。这不会检查之前写入新文件的项目

written = set()

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'+'}')
if var1 not in written: #check if you already wrote it
newfile.write(var1) # if not write it
written.add(var1) # you wrote it so add it the list of things you check against

关于python - 如何跳过文件中已经存在的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54732799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com