Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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:计算日期中的空格_Python_Datetime - Fatal编程技术网

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中)--只需调整解析后的年份即可。