如何使用python更改html文档的css属性?

2024-10-01 01:46:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含许多HTML文档的目录。其中大多数包含代码块

      .org-link {
        /* org-link */
        color: #b58900;
        font-weight: bold;
        text-decoration: underline;
      }

<style type="text/css">标记中。我想写一个脚本,从每个文件的这个块中删除text-decoration: underline;行并将颜色改为#2aa198。在

有没有可能用python完成这个任务?在


Tags: 代码text文档org目录stylehtmllink
1条回答
网友
1楼 · 发布于 2024-10-01 01:46:54

可以使用正则表达式进行必要的替换,如下所示:

import re

test = """
      .org-link {
        /* org-link */
        color: #b58900;
        font-weight: bold;
        text-decoration: underline;
      }
"""

def fix(org_link):
    new_color = re.sub(r'(.*?color\s*?:\s*?)(.*?)(;)', r'\1#777\3', org_link.group(0), flags=re.S)
    return re.sub(r'(.*?)(\s+?text-decoration: underline;)(.*?)', r'\1\3', new_color, flags=re.S)

print re.sub(r'(org-link\s+\{.*\})', fix, test, flags=re.S)

这将转换文本如下:

^{pr2}$

它首先识别合适的org-link块,然后首先替换颜色,然后删除任何text-decoration项。在

然后可以扩展该脚本,以便对给定文件夹中的所有HTML文件执行此操作,如下所示:

import re
import glob

def fix(org_link):
    new_color = re.sub(r'(.*?color\s*?:\s*?)(.*?)(;)', r'\1#777\3', org_link.group(0), flags=re.S)
    return re.sub(r'(.*?)(\s+?text-decoration: underline;)(.*?)', r'\1\3', new_color, flags=re.S)

for html_file in glob.glob('*.html'):
    print html_file
    with open(html_file) as f_input:
        html = re.sub(r'(org-link\s+\{.*\})', fix, f_input.read(), flags=re.S)

    with open(html_file, 'w') as f_output:
        f_output.write(html)

使用Python测试

相关问题 更多 >