Python脚本实现格式化css文件


Posted in Python onApril 08, 2015

最近研究研究了css,少不了去网上分析一下别人的网页, 但很多网站的css文件都是要么写在一行,要么一个换行都没有,看起来极其痛苦,所以写一个脚本转换一下,转换为比较有可读性的格式。下面就是这个脚本:

import string, sys
import re, StringIO

TAB=4


def format(ss):
  f = open (ss, "r")
  data = f.read()
  f.close()
  
  dlen = len(data)
  i = 0
  buf = StringIO.StringIO()
  start = 0
  while i < dlen:
    if data[i] == '{':
      
      buf.write(data[start:i] + ' { ')
      i = i + 1
      start = i
    elif data[i] == '}':
      last = string.strip(data[start:i])
      if last:
        buf.write(' '*TAB + last + ';')
      buf.write(' } ')
      i = i + 1
      start = i
      
    elif data[i] == ';':
      line = string.strip(data[start:i])
      
      buf.write(' '*TAB + line + '; ')
      i = i + 1
      start = i
    
    else:
      i = i + 1
  buf.write(data[start:i+1])
  
  return buf.getvalue()
  
  
if __name__ == '__main__':
  if len(sys.argv) == 1:
    print 'usage: cssformat.py filename'
    sys.exit()
  
  ret = format(sys.argv[1])
  print ret

使用方法:

python cssformat.py  待转换的文件名 > 转换后保存的文件

Python 相关文章推荐
python 切片和range()用法说明
Mar 24 Python
wxPython窗口的继承机制实例分析
Sep 28 Python
Python中的模块导入和读取键盘输入的方法
Oct 16 Python
Centos 升级到python3后pip 无法使用的解决方法
Jun 12 Python
python微信公众号之关键词自动回复
Jun 15 Python
漂亮的Django Markdown富文本app插件的实现
Jan 02 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
Python实现微信翻译机器人的方法
Aug 13 Python
Python如何脚本过滤文件中的注释
May 27 Python
python实现凯撒密码、凯撒加解密算法
Jun 11 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
django中cookiecutter的使用教程
Dec 03 Python
Python实现获取操作系统版本信息方法
Apr 08 #Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 #Python
python模块之StringIO使用示例
Apr 08 #Python
Python StringIO模块实现在内存缓冲区中读写数据
Apr 08 #Python
Python实现的简单文件传输服务器和客户端
Apr 08 #Python
操作Windows注册表的简单的Python程序制作教程
Apr 07 #Python
编写简单的Python程序来判断文本的语种
Apr 07 #Python
You might like
php smarty函数扩展
2010/03/15 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
PDO::rollBack讲解
2019/01/29 PHP
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
python Socket之客户端和服务端握手详解
2017/09/18 Python
python中logging包的使用总结
2018/02/28 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
python制作mysql数据迁移脚本
2019/01/01 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
请介绍一下Ant
2016/07/22 面试题
空字符串(“”)和null的区别
2012/11/13 面试题
法学专业毕业生求职信
2014/06/12 职场文书
实践论读书笔记
2015/06/29 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js