0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

2017-10-05 Python2 > regex | slice > AAA_20170228_030000_BBB.png というstringから 2017/02/28 03:00:00 というstringリストの取得 > 使わないグループは()をはずしていい | re.search() | join()+for | re.sub()での文字置換

Last updated at Posted at 2017-10-05
動作環境
Xeon E5-2620 v4 (8コア) x 2
32GB RAM
CentOS 6.8 (64bit)
openmpi-1.8.x86_64 とその-devel
mpich.x86_64 3.1-5.el6とその-devel
gcc version 4.4.7 (とgfortran)
NCAR Command Language Version 6.3.0
WRF v3.7.1を使用。
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) 
Python 3.6.0 on virtualenv
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)

前回の学習:
@shiracamus さんのコメントにてre.match()の方法を教えていただきました。

現在のreパッケージ使用のレベル: スライムにぼこられる程度

処理内容

  • 入力: AAA_20170228_030000_BBB.png
  • 出力(リスト):
    • 2017/02/28
    • 03:00:00

code

test_get_datetimelabel_171005.py
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import re
import sys
import subprocess as sb
from datetime import datetime, timedelta

# on Python 2.6.6
# coding rule: PEP8


def get_filename_yyyymmddhhnn_regex(filename):
    # input(filename): e.g. AAA_20170228_030000_BBB.png
    #
    date_time = re.match(r'(.*_)(\d{8}_\d{6})(_.*)', filename).group(2)
    wrkgrp = re.match(r'(\d{4})(\d{2})(\d{2})', date_time).group
    #adate = wrkgrp(1) + "/" + wrkgrp(2) + "/" + wrkgrp(3)
    adate = "/".join([wrkgrp(1), wrkgrp(2), wrkgrp(3)])
    wrkgrp = re.match(r'(.*_)(\d{2})(\d{2})(\d{2})', date_time).group
    atime = wrkgrp(2) + ":" + wrkgrp(3) + ":" + wrkgrp(4)
    return adate, atime


def get_filename_yyyymmddhhnn_slice(filename):
    # input(filename): e.g. AAA_20170228_030000_BBB.png
    #
    DAY, TIME = [2, 3]
    grp = re.match(r'(.*_)(\d{8}_)(\d{6})(_.*)', filename).group

    wrk = grp(DAY)
    adate = "%s/%s/%s" % (wrk[:4], wrk[4:6], wrk[6:8])

    wrk = grp(TIME)
    atime = "%s:%s:%s" % (wrk[:2], wrk[2:4], wrk[4:6])
    return adate, atime

SRC = "AAA_20170228_030000_BBB.png"

res = get_filename_yyyymmddhhnn_regex(SRC)
print(" ".join(res))

res = get_filename_yyyymmddhhnn_slice(SRC)
print(" ".join(res))

run
2017/02/28 03:00:00
2017/02/28 03:00:00

備考

get_filename_yyyymmddhhnn_regex()
はadate代入部分やatime代入部分が読みにくい。

get_filename_yyyymmddhhnn_slice()
は読みやすくはあるが、位置指定は間違いやすいかもしれない。

教えていただいた事項

@shiracamus さんのコメントにて色々な実装方法を教えていただきました。

情報感謝です。

実際に使いながら身に付けていきたいと思います。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?