Skip to main content
 首页 » 编程设计

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

2025年05月04日19davidwang456

我正在为 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 的新手,所以我只是在这里做实验...

请您参考如下方法:

您可以替换 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?">' 

我使用了代表 10 个数字字符和破折号的正则表达式 [-0-9]{10}。如果可以代表任何 10 个字符,请使用:。{10}