0

交換したい

text = '2012-02-23 | My Photo Folder'

new_text = '20120223_MyPhotoFolder'

ここで日付形式に一致する正規表現を見つけました http://regexlib.com/RETester.aspx?regexp_id=933

これにアプローチする最良の方法は何ですか?正規表現グループが必要で、それらのグループで置換を行う必要がありますか?

通常の string.replace() で「 | 」を検索し、「_」と「-」を「」に置き換えるだけでよいと思いますが、より一般的な解決策を見つけたいと思います。

前もって感謝します。

4

1 に答える 1

2
import re

text = '2012-02-23 | My Photo Folder'

pattern = r'''
(?P<year>\d{4}) # year group consisting of 4 digits
-
(?P<month>\d{2}) # month group consisting of 2 digits
-
(?P<date>\d{2}) # date group consisting of 2 digits
\s\|\s
(?P<name_with_spaces>.*$) # name_with_spaces consuming the rest of the string to the end
'''
compiled = re.compile(pattern, re.VERBOSE)
result = compiled.match(text)
print('{}{}{}_{}'.format(
    result.group('year'),
    result.group('month'),
    result.group('date'),
    result.group('name_with_spaces').translate(None,' ')))

出力:

>>> 
20120223_MyPhotoFolder

少し説明:

re.VERBOSE正規表現を複数行で記述して読みやすくし、コメントも許可します。

'{}{}{}_{}'.formatで指定された場所に引数を配置する単なる文字列補間メソッド{}です。

translateメソッドを適用しresult.group('name_with_spaces')てスペースを削除します。

于 2013-04-02T14:19:52.150 に答える