太阳不下山 发表于 2021-6-24 09:52:25

python中用string.maketrans和translate巧妙替换字符串

  python中用string.maketrans和translate巧妙替换字符串    将nginx日志中字符串 HTTP格式化为:"2013-07-03 00:29:40-05:00"    整条日志如下:
92.82.22.46 - - "GET /p_w_picpaths/mask_bg.png HTTP/1.1" 200 195 "http://www.chlinux.net/" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)" "-"
    将 替换成为:"2013-07-03 00:29:40-05:00"    把[]换成"",然后把T替换成空格做法如下:>>> s='''92.82.22.46 - - "GET /p_w_picpaths/mask_bg.png HTTP/1.1" 200 195 "http://www.chlinux.net/" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)" "-"'''
>>> table = string.maketrans('[]','""')
>>> s.translate(table)
'92.82.22.46 - - "2013-07-03T00:29:40-05:00" "GET /p_w_picpaths/mask_bg.png HTTP/1.1" 200 195 "http://www.chlinux.net/" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)" "-"'
>>> s.translate(table).replace('T', ' ',1)#替换掉第一个T为空格
'92.82.22.46 - - "2013-07-03 00:29:40-05:00" "GET /p_w_picpaths/mask_bg.png HTTP/1.1" 200 195 "http://www.chlinux.net/" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)" "-"'
也可以这样:
>>> table = re.sub('\[|\]','"',s).replace('T', ' ',1)
>>>print table
'92.82.22.46 - - "2013-07-03 00:29:40-05:00" "GET /p_w_picpaths/mask_bg.png HTTP/1.1" 200 195 "http://www.chlinux.net/" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)" "-"'

页: [1]
查看完整版本: python中用string.maketrans和translate巧妙替换字符串