【发布时间】:2016-09-20 09:28:45
【问题描述】:
我有一个带有文件名的字符串列表。文件名遵循特定的命名格式:
string1_YYYYMMDD_HHMMSS_string2
这里 YYYYMMDD 和 HHMMSS 是实际的日期和时间值。
我想删除每个条目的“string1”之后出现的所有字符。我一直在用正则表达式尝试这个,但没有白费。谁能帮我解决这个问题?
【问题讨论】:
标签: python regex python-2.7
我有一个带有文件名的字符串列表。文件名遵循特定的命名格式:
string1_YYYYMMDD_HHMMSS_string2
这里 YYYYMMDD 和 HHMMSS 是实际的日期和时间值。
我想删除每个条目的“string1”之后出现的所有字符。我一直在用正则表达式尝试这个,但没有白费。谁能帮我解决这个问题?
【问题讨论】:
标签: python regex python-2.7
您不需要正则表达式,只需在第一个下划线处拆分:
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
string1 可能包含额外的下划线。我想保留所有 string1 并且只摆脱尾随模式。
在这种情况下,您可以使用以下正则表达式:
_\d{8}_\d{6}_.*
【讨论】: