我有一個包含文件名的字符串列表。文件名遵循特定的命名格式:Python正則表達式從字符串列表中刪除特定模式
string1_YYYYMMDD_HHMMSS_string2
這裏YYYYMMDD和HHMMSS是實際的日期和時間值。
我想刪除出現在每個條目的'string1'之後的所有字符。我一直在嘗試這與正則表達式,但不是徒勞。任何人都可以幫助我嗎?
我有一個包含文件名的字符串列表。文件名遵循特定的命名格式:Python正則表達式從字符串列表中刪除特定模式
string1_YYYYMMDD_HHMMSS_string2
這裏YYYYMMDD和HHMMSS是實際的日期和時間值。
我想刪除出現在每個條目的'string1'之後的所有字符。我一直在嘗試這與正則表達式,但不是徒勞。任何人都可以幫助我嗎?
你並不需要一個正則表達式,剛剛拆分的第一個下劃線:
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])
使用正則表達式:
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}_.*
string1可能包含其他下劃線。我想保留所有的string1,並只擺脫尾隨模式。 –
@SudeepMohanty查看更新! –
您的最新更新也完成了這項工作!謝謝! –
短期和甜蜜! –
我可以做到這一點,但'string1'也可以包含下劃線。總是在每個字符串的末尾重複的唯一模式是_YYYYMMDD_HHMMSS_string2 –
啊好的,堅持:) – HumanCatfood