我正在尝试解析CSS文件以更改html样式。 查看示例CSS文本,如下所示:
p.FM_table_cell_body308 {
margin-left:0.000pt;
margin-right:0.000pt;
text-align:left;
text-indent:0.000pt;
}
p.FM_table_cell_body309 {
margin-left:0.000pt;
margin-right:0.000pt;
text-align:left;
text-indent:0.000pt;
}
p.FM_table_cell_body {
margin-left:0.000pt;
margin-right:0.000pt;
text-align:left;
text-indent:0.000pt;
}
我想更改“ text-align:left;”的“ left”一词到“ p.FM_table_cell_body *** {”(***是数字)下的每个“中心”。
所以,这就是我所期待的:
p.FM_table_cell_body308 {
margin-left:0.000pt;
margin-right:0.000pt;
text-align:center;
text-indent:0.000pt;
}
p.FM_table_cell_body309 {
margin-left:0.000pt;
margin-right:0.000pt;
text-align:center;
text-indent:0.000pt;
}
p.FM_table_cell_body { # this has no number so should pass
margin-left:0.000pt;
margin-right:0.000pt;
text-align:left; # no change
text-indent:0.000pt;
}
到目前为止,这是我正在编码的内容:
from bs4 import BeautifulSoup
import glob2
import re
with open ("C:\\TEST\\HTML\\Output_sample1\\Responsive HTML5\\Output.css","r",encoding="utf-8") as file_css :
with open ("C:\\TEST\\HTML\\Output_sample1\\Responsive HTML5\\Output_test.css","wt",encoding="utf-8") as file_css_text_align :
lines_css = file_css.readlines()
for i_css, line_css in enumerate(lines_css[:-1]):
try :
FM_number_css = re.findall('FM_table_cell_body[1-9][0-9]?[0-9]?[0-9]?', line_css)
text_align_content = lines_css[i_css + 3]
if FM_number_css and text_align_content == 'text-align:left;':
text_align_content = text_align_content.split(':')
text_align_content.remove('left;\n')
text_align_content.insert(1, 'center;\n')
new_text_align_content = ':'.join(text_align_content)
file_css_text_align.write(str(new_text_align_content))
else :
file_css_text_align.write(str(line_css))
except :
pass
但是我尝试制作的此代码无法正常工作。 该代码不是将this(text-align:left;)更改为(p.FM_table_cell_body *** {)更改为text-align:center;
你们会给我一些建议吗?
谢谢你,祝你有美好的一天。
答案 0 :(得分:1)
您可以将单个正则表达式与re.sub
一起使用:搜索
(p\.FM_table_cell_body\d+ {[^}]+text-align:)left
捕获一个节中的所有内容,最多捕获一个组中的text-align:
,然后进行 match 'left'
,并替换为捕获的第一个组和'center'
,从而将'left'
替换为'center'
:
https://regex101.com/r/r0dDBz/1
input = '''p.FM_table_cell_body308 {
margin-left:0.000pt;
margin-right:0.000pt;
text-align:left;
text-indent:0.000pt;
}
p.FM_table_cell_body309 {
margin-left:0.000pt;
margin-right:0.000pt;
text-align:left;
text-indent:0.000pt;
}
p.FM_table_cell_body {
margin-left:0.000pt;
margin-right:0.000pt;
text-align:left;
text-indent:0.000pt;
}'''
print(re.sub(r'(p\.FM_table_cell_body\d+ {[^}]+text-align:)left', r'\1center', input))