2016-09-20 4 views
-2

私はファイル名の文字列のリストを持っています。ここで文字列のリストから特定のパターンを削除するPythonの正規表現

string1_YYYYMMDD_HHMMSS_string2 

YYYYMMDDとHHMMSSは、実際の日付と時刻の値は以下のとおりです。ファイル名は特定のネーミング・フォーマットに従ってください。

「string1」の後ろに表示されるすべての文字を各エントリごと削除します。私は正規表現でこれを試してきましたが無駄にはありません。誰も私にこれを手伝ってもらえますか?

答えて

5

あなただけの最初のアンダースコアで分割正規表現、必要はありません。あなただけしようと、最後の部分(「_YYYYMMDD_HHMMSS_string2」)に頼ることができる場合

s = 'string1_YYYYMMDD_HHMMSS_string2' 
return s.split('_')[0] 

[編集]正規表現を使用して

s = 's_t_r_i_n_g_1_YYYYMMDD_HHMMSS_string2' 
return '_'.join(s.split('_')[:-3]) 
+0

ショート&スウィート! –

+0

私はそれを行うことができましたが、 'string1'にもアンダースコアを含めることができます。各文字列の最後に常に繰り返される唯一のパターンは、_YYYYMMDD_HHMMSS_string2 –

+0

ああ、つまらないですよね。 – HumanCatfood

2

import re 
s = 'string1_YYYYMMDD_HHMMSS_string2' 
newstr = re.sub('_.*', '', s) 
print(newstr) 
このようなインデックスの

注:

  • _.*_と一致し、その次の文字のすべて。
  • re.sub(p, r, s)pの場合はsを検索し、すべての一致をrに置き換えます。

更新#1

string1が追加のアンダースコアが含まれていてもよいです。私はstring1のすべてを保持し、後続のパターンを取り除きたいだけです。あなたは、次の正規表現を使用することができます。この場合

_\d{8}_\d{6}_.* 

デモ:https://regex101.com/r/jS2gL5/1

+0

string1にはさらに下線が含まれることがあります。私はstring1のすべてを保持し、後続のパターンを取り除きたいだけです。 –

+0

@SudeepMohantyアップデートをご覧ください! –

+0

あなたの最新のアップデートも同様に機能します!ありがとう! –

関連する問題