Python 使用正则表达式提取日期和fie名称
我有一个具有以下名称格式的文件,我想将日期时间和文件名拆分,并将其解析为CSV文件,并将其分为不同的列Python 使用正则表达式提取日期和fie名称,python,regex,pandas,Python,Regex,Pandas,我有一个具有以下名称格式的文件,我想将日期时间和文件名拆分,并将其解析为CSV文件,并将其分为不同的列 示例文件名 2019-12-05\u 18:02:28.801656\u 104\u 1\u 15755494141338.jpg 我只需要2019-12-05,18:02:281041575549413138 我如何使用正则表达式来实现这一点?感谢您的帮助和反馈您无需使用regex就可以做到这一点 filename = '2019-12-05_18:02:28.801656_104_1_1
示例文件名
2019-12-05\u 18:02:28.801656\u 104\u 1\u 15755494141338.jpg
我只需要2019-12-05,18:02:281041575549413138
我如何使用正则表达式来实现这一点?感谢您的帮助和反馈您无需使用regex就可以做到这一点
filename = '2019-12-05_18:02:28.801656_104_1_1575549141338.jpg'
date1 = filename.split('_')[0]
time1 = filename.split('_')[1].split('.')[0]
number2 = filename.split('_')[2]
number1 = filename.split('_')[-1].split('.')[0]
或者作为一个班轮
extract1 = filename.split('_')[0] + '_' +filename.split('_')[1].split('.')[0] +'_' + filename.split('_')[2]+'_' + filename.split('_')[-1].split('.')[0]
使用re
import re
res = (re.split("_", filename))
# [' 2019-12-05', '18:02:28.801656', '104', '1', '1575549141338.jpg']
date = res[0]
time = res[1].split('.', 1)[0]
info2 = res[2]
info1 = res[3]
filename = (os.path.splitext(res[-1]))[0]
print (date, time, info1, info2, filename)
# 2019-12-05 18:02:28 1 104 1575549141338
import os
res = filename.split("_")
# [' 2019-12-05', '18:02:28.801656', '104', '1', '1575549141338.jpg']
date = res[0]
time = res[1].split('.', 1)[0]
info2 = res[2]
info1 = res[3]
filename = (os.path.splitext(res[-1]))[0]
print (date, time, info1, info2, filename)
# 2019-12-05 18:02:28 1 104 1575549141338
输出:
无re
import re
res = (re.split("_", filename))
# [' 2019-12-05', '18:02:28.801656', '104', '1', '1575549141338.jpg']
date = res[0]
time = res[1].split('.', 1)[0]
info2 = res[2]
info1 = res[3]
filename = (os.path.splitext(res[-1]))[0]
print (date, time, info1, info2, filename)
# 2019-12-05 18:02:28 1 104 1575549141338
import os
res = filename.split("_")
# [' 2019-12-05', '18:02:28.801656', '104', '1', '1575549141338.jpg']
date = res[0]
time = res[1].split('.', 1)[0]
info2 = res[2]
info1 = res[3]
filename = (os.path.splitext(res[-1]))[0]
print (date, time, info1, info2, filename)
# 2019-12-05 18:02:28 1 104 1575549141338
输出:
链接:
您可以不重新拆分字符串
>>> filename = '2019-12-05_18:02:28.801656_104_1_1575549141338.jpg'
>>> filename.split('_')
['2019-12-05', '18:02:28.801656', '104', '1', '1575549141338.jpg']
它不能给你想要的东西。您可以更进一步,在多个字符['.'和'.'上拆分
>>> import re
>>> re.split("[\._]",filename)
['2019-12-05', '18:02:28', '801656', '104', '1', '1575549141338', 'jpg']
你可以更进一步,建立一个re to
您可以更进一步,提取日期时间
>>> import datetime
>>> date, x, y = re.match(r'^(\d+-\d+-\d+_\d+:\d+:\d+\.\d+)_(\d+)_\d+_(\d+)\.jpg$', filename).groups()
>>> datetime.datetime.strptime(date, '%Y-%m-%d_%H:%M:%S.%f')
datetime.datetime(2019, 12, 5, 18, 2, 28, 801656)
您有没有尝试过实现所需的输出?导入re filename=“2019-12-05_18:02:28.801656_104_1_1575549491338.jpg”x=re.split(“"”,filename)print(x)您好,欢迎使用StackOverflow。请参阅和。所以我在拆分[2019-12-05',18:02:28.801656',104',1',15755491438.jpg',后得到了这个输出。这是固定格式的吗?就像是2019-12-05_18:02:28.801656_104_1_1575549491338.jpg这样吗?谢谢Trevor的回复。我在一个文件夹中有多个相同格式的文件。我如何读取所有文件并复制到CSV。你能告诉我如何继续吗。除了解析文件名之外,这是两个不同的问题。我会看着你
>>> import datetime
>>> date, x, y = re.match(r'^(\d+-\d+-\d+_\d+:\d+:\d+\.\d+)_(\d+)_\d+_(\d+)\.jpg$', filename).groups()
>>> datetime.datetime.strptime(date, '%Y-%m-%d_%H:%M:%S.%f')
datetime.datetime(2019, 12, 5, 18, 2, 28, 801656)