发现使用Python
问题描述:
使用Python在一个文件中匹配的字符串我想找到这个格式相匹配的文件中的字符串YYYY-MM-DD发现使用Python
Here is how my sample file looks like
I want to find date 2016-01-01 ,2016-01-05
then I want to find 2016-01-17
then I want to find this date 2016-01-04
输出应该是
2016-01-01
2016-01-05
2016-01-17
2016-01-04
下面
是我目前使用的代码,但我找不到匹配的记录,对此的任何帮助将不胜感激?
#!/usr/bin/python
import sys
import csv
import re
pattern = re.compile("^([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9])$")
for i, line in enumerate(open('C:\\Work\\scripts\\logs\\CSI.txt')):
for match in re.finditer(pattern, line):
print 'Found on line' % (i+1, match.groups())
答
我会删除^($和,因为你的日期似乎并不分隔:
re.compile("[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]")
答
您可以使用正则表达式和日期时间从字符串
import re
from datetime import datetime
string = "I want to find date 2016-01-01 ,2016-01-05"
pattern = re.complie("[\d]{4}-\d{2}-\d{2}")
raw_dates = pattern.findall(string)
parsed_dates = []
for date in raw_dates:
try:
d = datetime.strptime(date, "%Y-%m-%d")
parsed_dates.append(d)
except:
pass
print(parsed_dates)
得到有效日期输出:
['2016-01-01', '2016-01-05']
用'\ b'替换''','$'即'r'\ b \ d {4} - \ d {2} - \ d {2} \ b'' –
它仍然无法正常工作/ – user1570210
#在/ usr/bin中/ Python的 进口SYS 导入CSV 进口重新 模式= re.compile(R”! \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ')): for re.finditer(pattern,line)中的匹配: print'Found on line'%(i + 1,match.groups()) – user1570210