Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式提取日期和fie名称_Python_Regex_Pandas - Fatal编程技术网

Python 使用正则表达式提取日期和fie名称

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

我有一个具有以下名称格式的文件,我想将日期时间和文件名拆分,并将其解析为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_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)