Python:计算日期中的空格
我有一个日志文件Python:计算日期中的空格,python,datetime,Python,Datetime,我有一个日志文件file.txt,它的日期格式为'%b%\u d%H:%M:%S'。 当一个月的第1天和第9天之间时,它会在字段中填充一个空格 我只是想知道我的代码是否是检查这是否包含空格的最佳方法,因为我只是想从每行中提取日期/时间 file.txt Sep 8 16:13:02 blah Sep 8 16:14:02 blahblah Sep 8 16:15:02 blablahblah 代码: with open('file.txt','r') as f: for line
file.txt
,它的日期格式为'%b%\u d%H:%M:%S'
。
当一个月的第1天和第9天之间时,它会在字段中填充一个空格
我只是想知道我的代码是否是检查这是否包含空格的最佳方法,因为我只是想从每行中提取日期/时间
file.txt
Sep 8 16:13:02 blah
Sep 8 16:14:02 blahblah
Sep 8 16:15:02 blablahblah
代码:
with open('file.txt','r') as f:
for line in f:
if int(line.split()[1]) < 10:
d = line.split()[0] + ' ' + line.split()[1] + ' ' + line.split()[2] #double space after [0]
else:
d = line.split()[0] + ' ' + line.split()[1] + ' ' + line.split()[2] #single space after [0]
print d
以open('file.txt','r')作为f的:
对于f中的行:
如果int(line.split()[1])<10:
d=line.split()[0]+''+line.split()[1]+''+line.split()[2]#在[0]后面加两倍空格
其他:
d=line.split()[0]+''+line.split()[1]+''+line.split()[2]#在[0]之后有一个空格
打印d
根据jedwards的评论:
from datetime import datetime
f = '''Sep 8 16:13:02 blah
Sep 8 16:14:02 blahblah
Sep 8 16:15:02 blablahblah'''.splitlines()
for line in f:
d = datetime.strptime(line[:15], '%b %d %H:%M:%S')
print(d)
输出:
1900-09-08 16:13:02
1900-09-08 16:14:02
1900-09-08 16:15:02
根据jedwards的评论:
from datetime import datetime
f = '''Sep 8 16:13:02 blah
Sep 8 16:14:02 blahblah
Sep 8 16:15:02 blablahblah'''.splitlines()
for line in f:
d = datetime.strptime(line[:15], '%b %d %H:%M:%S')
print(d)
输出:
1900-09-08 16:13:02
1900-09-08 16:14:02
1900-09-08 16:15:02
如果希望用空格填充输出字段,可以使用python
{1:>2}
表示字段1应该右对齐,并且至少有2个字符宽。缺少的字符将用空格填充
在Python3.6+中,您还可以使用f-strings使其更易于解释
>>> for line in 'Sep 8 16:13:02 blah', 'Sep 12 16:13:02 blah blah blah':
>>> month, date, time, *rest = line.split()
>>> print(f'date: {month} {date:>2} {time}\ncomment: {" ".join(rest)}')
date: Sep 8 16:13:02
comment: blah
date: Sep 12 16:13:02
comment: blah blah blah
如果希望用空格填充输出字段,可以使用python
{1:>2}
表示字段1应该右对齐,并且至少有2个字符宽。缺少的字符将用空格填充
在Python3.6+中,您还可以使用f-strings使其更易于解释
>>> for line in 'Sep 8 16:13:02 blah', 'Sep 12 16:13:02 blah blah blah':
>>> month, date, time, *rest = line.split()
>>> print(f'date: {month} {date:>2} {time}\ncomment: {" ".join(rest)}')
date: Sep 8 16:13:02
comment: blah
date: Sep 12 16:13:02
comment: blah blah blah
可能有一种更好的方法可以将其放入timestamp/datetime变量中,如果您真的想改进这一点,我会继续寻找。datetime可以处理额外的空间而不会出现问题:
print(datetime.strtime(“Sep 8 16:13:02,'%b%d%H:%M:%s”)
(有两个空格,只是隐藏在HTML中)--只需调整解析后的年份。可能有更好的方法将其放入timestamp/datetime变量中,如果您真的想改进这一点,我会继续寻找。datetime处理额外空间时不会出现问题:print(datetime.strtime(“Sep 8 16:13:02,“%b%d%H:%M:%s”)
(存在两个空格,只是隐藏在HTML中)--只需调整解析后的年份即可。