Python - 删除未知的10个字符串

时间:2012-08-01 04:24:08

标签: python str-replace cache-control

我正在为css / js使用Eric Bidelman的/ HTML5Rocks cachebust.py文件的修改版本。 link is here

而不是附加时间戳,如

.css?2012-07-30

我将变量修改为 -

cachebust = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(10))

所以它变成了(例如)

.css?6SKD39SFJ3

他的原始版本似乎也没有删除日期,所以我不确定这是一个'缓存控制',但我想如果我可以自动剥离这10个字符,它会工作。首先针对任何js文件(对于新文件),然后如果js? (已使用cachecontrol),删除现有的cachecontrol

asset = re.search('\.(js")><\/script>', line)
if asset is not None:
  existing = re.search('\.(js?"', line)
  if existing is not None:
    line[i] = line.replace('.js?'STRING????'"', '.js"')
  lines[i] = line.replace('.js"></script>', '.js?%s"></script>' % cachebust)
关于STRING ????的想法应该是,或者这种方法不起作用?我是python的新手所以我只是在这里试验...

1 个答案:

答案 0 :(得分:1)

您可以替换3行:

existing = re.search('\.(js?"', line)
if existing is not None:
    line[i] = line.replace('.js?'STRING????'"', '.js"')

使用:

re.sub(r'\.js\?[-0-9]{10}">',r'.js?">', line)

输出:

>>> re.sub(r'\.js\?[-0-9]{10}">',r'.js?">', '<script type="blah" src="url/to/path.js?2012-07-02">')
'<script type="blah" src="url/to/path.js?">'

我使用了正则表达式[-0-9]{10},它代表10位数字和短划线。如果可以代表任意 10个字符,请使用:.{10}