2016-09-20 91 views
-2

我有一個包含文件名的字符串列表。文件名遵循特定的命名格式:Python正則表達式從字符串列表中刪除特定模式

string1_YYYYMMDD_HHMMSS_string2 

這裏YYYYMMDD和HHMMSS是實際的日期和時間值。

我想刪除出現在每個條目的'string1'之後的所有字符。我一直在嘗試這與正則表達式,但不是徒勞。任何人都可以幫助我嗎?

回答

5

你並不需要一個正則表達式,剛剛拆分的第一個下劃線:

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

[編輯]:

如果你只能依靠最後部分(「_YYYYMMDD_HHMMSS_string2」),那麼試着索引是這樣的:

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)搜索s對於p並用r替換所有匹配。

更新#1

字符串1可包含附加下劃線。我想保留所有的string1,並只擺脫尾隨模式。

在這種情況下,你可以使用下面的正則表達式:

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

演示:https://regex101.com/r/jS2gL5/1

+0

string1可能包含其他下劃線。我想保留所有的string1,並只擺脫尾隨模式。 –

+0

@SudeepMohanty查看更新! –

+0

您的最新更新也完成了這項工作!謝謝! –

相關問題