創造我所擁有的文件,文件名如:刪除日期時間由strftime
"001_-_h_-_hydrogen.2014-09-13.14-27-45.jpg"
我想從文件名中刪除與strftime
創建的日期時間,並得到:
"001_-_h_-_hydrogen.jpg"
功能看起來像:
def remove_datetime(str):
return str_withoutdatetime
我真的很新的正則表達式。我怎麼能在Python中做到這一點?
創造我所擁有的文件,文件名如:刪除日期時間由strftime
"001_-_h_-_hydrogen.2014-09-13.14-27-45.jpg"
我想從文件名中刪除與strftime
創建的日期時間,並得到:
"001_-_h_-_hydrogen.jpg"
功能看起來像:
def remove_datetime(str):
return str_withoutdatetime
我真的很新的正則表達式。我怎麼能在Python中做到這一點?
可以使用形式的正則表達式
(\.\d{2,4}(-\d{2}){2}){2}
用法示例
>>> str="001_-_h_-_hydrogen.2014-09-13.14-27-45.jpg"
>>> re.sub(r'(\.\d{2,4}(-\d{2}){2}){2}', '', str)
'001_-_h_-_hydrogen.jpg'
OR
更具體
>>> re.sub(r'(\.\d{2,4}(-\d{2}){2}){2}(?=.jpg)', '', str)
'001_-_h_-_hydrogen.jpg'
它所呢?
\.
匹配的.
這裏後最低hydrogen
\d{2,4}
比賽2(用於小時),最多4個(對年)數字點匹配
(-\d{2})
匹配位2時間即月份和分鐘
{2}
量化二次,即再它無二的匹配項的日期/或第二
{2}
再次量化匹配整個TIEM
(?=.jpg)
檢查是否匹配的字符串之後是.jpg
你也可以寫一個不太神祕的其他長正則表達式,如
\.\d{4}(-\d{2}){2}\.\d{2}(-\d{2}){2}(?=.jpg)
wh ICH會做同樣的目的,
>>> re.sub(r'.\d{4}(-\d{2}){2}\.\d{2}(-\d{2}){2}(?=.jpg)', '', str)
'001_-_h_-_hydrogen.jpg'
這是很花哨...這是有道理的,但是由於OP對於重新使用「真的很新」,也許你可以分解你爲他/她重複使用重複元素的方式 – beroe 2014-11-22 17:35:23
@beroe我添加了一個解釋和直接的方法。希望它現在更有意義:) – nu11p01n73R 2014-11-22 17:45:52
>>> x="001_-_h_-_hydrogen.2014-09-13.14-27-45.jpg"
>>> xnew= re.sub(r'\.\d{4}-\d{2}-\d{2}\.\d{2}-\d{2}-\d{2}', '', x)
>>> xnew
'001_-_h_-_hydrogen.jpg'
參見:Python re
對不起,我沒有正確地表達自己。我的意思是從文件名字符串中刪除日期時間 – cyberjoac 2014-11-22 17:13:59
從所有的名字,這是一個例子。格式雖然是「filename.Y-M-D.HH-MM-SS.jpg」 – cyberjoac 2014-11-22 17:17:59
考慮到字符串總是相同的格式,你可能可以這樣做:'lst = mystr.split('。'); mystr = lst [0] +'。' + lst [-1]'。這比Regex更有效率。 – iCodez 2014-11-22 17:37:37