Get filename and date time from string
我有以下格式的文件名:name_2016_04_16.txt
我正在使用python3,我想从这个文件中提取两件事。 前缀或名称值作为字符串,日期作为字符串中表示的日期的DateTime值。 对于上面的例子,我想提取:
filename:name作为String
日期:2016年4月16日作为DateTime
我将这些值保存到数据库,所以我希望DateTime变量是sql友好的。
有没有可以帮我这么做的图书馆? 或者有一个简单的方法来解决这个问题?
我按照建议尝试了以下方法:
1 2 3 4 5 6 | filename = os.path.splitext(filename)[0] print(filename) filename.split("_")[1::] print(filename) '/'.join(filename.split("_")[1::]) print(filename) |
但它输出:
1 2 3 | name_2016_04_16 name_2016_04_16 name_2016_04_16 |
并没有真正提取名称和日期。
谢谢!
我先删除文件扩展名,然后用下划线拆分,删除'name'字段。最后,我将通过斜杠加入(可能会记录此值)并使用datetime库解析日期
1 2 3 4 5 6 | import os from datetime import datetime file_name = os.path.splitext("name_2016_04_16.txt")[0] date_string = '/'.join(file_name.split("_")[1::]) parsed_date = datetime.strptime(date_string,"%Y/%m/%d") |
为了使日期字符串sql友好,我发现这样的帖子:将一个Python datetime.datetime对象插入到MySQL中,这表明以下内容应该可行
1 | sql_friendly_string = parsed_date.strftime('%Y-%m-%d %H:%M:%S') |
您可以在"。"上拆分文件名。然后在"_"上再次拆分。这应该给你一个字符串列表。第一个是名称,第二个到第四个分别是年,月和日。然后将日期转换为SQL友好表单。
像这样的东西:
1 2 3 4 5 6 7 8 9 10 11 12 13 | rawname ="name_2016_04_16.txt" filename = rawname.split(".")[0] #drop the .txt name = filename.split("_")[0] #provided there's no underscore in the name part of the filename year = filename.split("_")[1] month = filename.split("_")[2] day = filename.split("_")[3] datestring = (month,day,year) # temp string to store a the tuple in the required order date ="/".join(datestring) #as shown above datestring = (year,month,day) SQL_date ="-".join(datestring ) # SQL date print name print date print SQL_date |
除非您想使用日期时间库来获取日期时间日期,否则在这种情况下查找日期时间库
然后你可以做这样的事情:
1 | SQL_date = datetime.strptime(date, '%m/%d/%Y') |
这是我现在能想到的最明确的方式。我确定有更短的方法:)
抱歉格式不好,我在手机上发帖。
简单地这样做怎么样?
1 2 3 4 5 6 7 | filename = 'name_2016_04_16.txt' date = filename[-14:-4] # counting from the end will ensure that you extract the date no matter what the"name" is and how long it is prefix = filename [:-14] from datetime import datetime date = datetime.strptime(date, '%Y_%m_%d') # this turns the string into a datetime object |
(但是,这适用于Python 2.7,如果适用于Python 3,则需要自行查找。)