gpt4 book ai didi

python - 时间数据 'n' 格式不匹配 '%b %d %Y' 错误

转载 作者:行者123 更新时间:2023-12-04 19:42:36 24 4
gpt4 key购买 nike

我创建了一个名为 normalized_rec(raw_rec) 的函数

def normalized_rec(raw_recs):
import time
import os
for rec in raw_recs:
jday = time.strftime('%j',time.strptime(' '.join(rec[4:6]+rec[7:8]),'%b %d %Y'))
jday2 = time.strftime('%j',time.strptime(' '.join(rec[10:12]+rec[13:14]), '%b %d %Y'))
if jday == jday2:
norm_rec = []
norm_rec.append(rec.copy())
return norm_rec
else:
# calculate next day string in 'WoD Month Day HH:MM:SS YYYY'
new_rec1 = rec.copy()
new_rec = rec.copy()
t_next = time.mktime(time.strptime(' '.join(new_rec1[4:6]+rec[7:8]),'%b %d %Y'))+86400
next_day = time.strftime('%a %b %d %H:%M:%S %Y',time.strptime(time.ctime(t_next))).split()
new_rec1[12] = '23:59:59'
new_rec1[9] = new_rec1[3]
new_rec1[10] = new_rec1[4]
new_rec1[11] = new_rec1[5]
new_rec[3] = next_day[0] # Day of week Sun, Mon, Tue...
new_rec[4] = next_day[1] # Month Jan, Feb, Mar, ...
new_rec[5] = next_day[2] # Day of Month 01, 02, ...
new_rec[6] = next_day[3] # Time HH:MM:SS
new_rec[7] = next_day[4] # Year YYYY
norm_rec = normalized_rec(new_rec)
normalized_recs = norm_rec.copy()
normalized_recs.insert(0,new_rec1) # call normalized_rec function recursive
return normalized_recs

我在 login_rec 列表中有原始数据

content of login_rec -

[['rchan', 'pts/9', '10.40.91.236', 'Tue', 'Feb', '13', '16:53:42', '2018', '-', 'Tue', 'Feb', '15', '16:57:02', '2018', '(00:03)'], ['cwsmith', 'pts/6', '10.40.43.94', 'Tue', 'Feb', '13', '16:51:47', '2018', '-', 'Tue', 'Feb', '13', '16:56:13', '2018', '(00:04)'], ['mlee18', 'pts/6', '10.40.43.94', 'Tue', 'Feb', '13', '16:50:20', '2018', '-', 'Tue', 'Feb', '13', '16:51:27', '2018', '(00:01)'], ['hfang', 'pts/4', '24.114.50.50', 'Tue', 'Feb', '13', '16:31:38', '2018', '-', 'Tue', 'Feb', '13', '17:48:39', '2018', '(01:17)'], ['bigia', 'pts/8', '24.114.50.50', 'Tue', 'Feb', '13', '19:28:43', '2018', '-', 'Tue', 'Feb', '13', '20:28:31', '2018', '(00:59)'], ['rchan', 'pts/2', '10.40.91.236', 'Tue', 'Feb', '13', '16:22:00', '2018', '-', 'Tue', 'Feb', '13', '16:45:00', '2018', '(00:23)'], ['asmith', 'pts/2', '10.43.115.162', 'Tue', 'Feb', '13', '16:19:29', '2018', '-', 'Tue', 'Feb', '13', '16:22:00', '2018', '(00:02)'], ['tsliu2', 'pts/4', '10.40.105.130', 'Tue', 'Feb', '13', '16:17:21', '2018', '-', 'Tue', 'Feb', '13', '16:30:10', '2018', '(00:12)'], ['mshana', 'pts/13', '10.40.91.247', 'Tue', 'Feb', '13', '16:07:52', '2018', '-', 'Tue', 'Feb', '13', '16:45:52', '2018', '(00:38)'], ['asmith', 'pts/11', '10.40.105.130', 'Tue', 'Feb', '13', '14:07:43', '2018', '-', 'Tue', 'Feb', '13', '16:07:43', '2018', '(02:00)']]



如果我做 login_rec[0] 这会出现

['rchan', 'pts/9', '10.40.91.236', 'Tue', 'Feb', '13', '16:53:42', '2018', '-', 'Tue', 'Feb', '15', '16:57:02', '2018', '(00:03)']



所以如果我做 normalized_rec(login_rec)

我得到这个错误我不知道为什么
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 26, in normalized_rec
File "<stdin>", line 5, in normalized_rec
File "/usr/lib64/python3.4/_strptime.py", line 501, in _strptime_time
tt = _strptime(data_string, format)[0]
File "/usr/lib64/python3.4/_strptime.py", line 344, in _strptime
(data_string, format))
ValueError: time data 'n' does not match format '%b %d %Y'

我已经导入了所有模块

谢谢

最佳答案

你应该学习一些基本的调试策略。我用可能是技术最低的方法追踪了你的值(value)观:print命令。我只是跟踪执行和值:

def normalized_rec(raw_recs):
import time
import os
for rec in raw_recs:
print("\nrec\t", rec)
print("4:6\t", rec[4:6])
print("7:8\t", rec[7:8])
jday = time.strftime('%j',time.strptime(' '.join(rec[4:6]+rec[7:8]),'%b %d %Y'))
jday2 = time.strftime('%j',time.strptime(' '.join(rec[10:12]+rec[13:14]), '%b %d %Y'))
if jday == jday2:
print("TRACE dates match")
norm_rec = []
norm_rec.append(rec.copy())
return norm_rec
else:
# calculate next day string in 'WoD Month Day HH:MM:SS YYYY'
print("TRACE dates differ")
new_rec1 = rec.copy()
new_rec = rec.copy()
t_next = time.mktime(time.strptime(' '.join(new_rec1[4:6]+rec[7:8]),'%b %d %Y'))+86400
next_day = time.strftime('%a %b %d %H:%M:%S %Y',time.strptime(time.ctime(t_next))).split()
new_rec1[12] = '23:59:59'
new_rec1[9] = new_rec1[3]
new_rec1[10] = new_rec1[4]
new_rec1[11] = new_rec1[5]
new_rec[3] = next_day[0] # Day of week Sun, Mon, Tue...
new_rec[4] = next_day[1] # Month Jan, Feb, Mar, ...
new_rec[5] = next_day[2] # Day of Month 01, 02, ...
new_rec[6] = next_day[3] # Time HH:MM:SS
new_rec[7] = next_day[4] # Year YYYY
print("BEFORE recursion:\nnew_rec1\t", new_rec1, "\nnew_rec\t", new_rec)
print("RECUR\t", new_rec)
norm_rec = normalized_rec(new_rec)
normalized_recs = norm_rec.copy()
normalized_recs.insert(0,new_rec1) # call normalized_rec function recursive
print("RETURN dates differ")
return normalized_recs


login_rec = [['rchan', 'pts/9', '10.40.91.236', 'Tue', 'Feb', '13', '16:53:42', '2018', '-', 'Tue', 'Feb', '15', '16:57:02', '2018', '(00:03)'], ['cwsmith', 'pts/6', '10.40.43.94', 'Tue', 'Feb', '13', '16:51:47', '2018', '-', 'Tue', 'Feb', '13', '16:56:13', '2018', '(00:04)'], ['mlee18', 'pts/6', '10.40.43.94', 'Tue', 'Feb', '13', '16:50:20', '2018', '-', 'Tue', 'Feb', '13', '16:51:27', '2018', '(00:01)'], ['hfang', 'pts/4', '24.114.50.50', 'Tue', 'Feb', '13', '16:31:38', '2018', '-', 'Tue', 'Feb', '13', '17:48:39', '2018', '(01:17)'], ['bigia', 'pts/8', '24.114.50.50', 'Tue', 'Feb', '13', '19:28:43', '2018', '-', 'Tue', 'Feb', '13', '20:28:31', '2018', '(00:59)'], ['rchan', 'pts/2', '10.40.91.236', 'Tue', 'Feb', '13', '16:22:00', '2018', '-', 'Tue', 'Feb', '13', '16:45:00', '2018', '(00:23)'], ['asmith', 'pts/2', '10.43.115.162', 'Tue', 'Feb', '13', '16:19:29', '2018', '-', 'Tue', 'Feb', '13', '16:22:00', '2018', '(00:02)'], ['tsliu2', 'pts/4', '10.40.105.130', 'Tue', 'Feb', '13', '16:17:21', '2018', '-', 'Tue', 'Feb', '13', '16:30:10', '2018', '(00:12)'], ['mshana', 'pts/13', '10.40.91.247', 'Tue', 'Feb', '13', '16:07:52', '2018', '-', 'Tue', 'Feb', '13', '16:45:52', '2018', '(00:38)'], ['asmith', 'pts/11', '10.40.105.130', 'Tue', 'Feb', '13', '14:07:43', '2018', '-', 'Tue', 'Feb', '13', '16:07:43', '2018', '(02:00)']]

print("CALL\t", login_rec[0])

print("RESULT: ", normalized_rec(login_rec))

输出:
CALL     ['rchan', 'pts/9', '10.40.91.236', 'Tue', 'Feb', '13', '16:53:42', '2018', '-', 'Tue', 'Feb', '15', '16:57:02', '2018', '(00:03)']

rec ['rchan', 'pts/9', '10.40.91.236', 'Tue', 'Feb', '13', '16:53:42', '2018', '-', 'Tue', 'Feb', '15', '16:57:02', '2018', '(00:03)']
4:6 ['Feb', '13']
7:8 ['2018']
TRACE dates differ
BEFORE recursion:
new_rec1 ['rchan', 'pts/9', '10.40.91.236', 'Tue', 'Feb', '13', '16:53:42', '2018', '-', 'Tue', 'Feb', '13', '23:59:59', '2018', '(00:03)']
new_rec ['rchan', 'pts/9', '10.40.91.236', 'Wed', 'Feb', '14', '00:00:00', '2018', '-', 'Tue', 'Feb', '15', '16:57:02', '2018', '(00:03)']
RECUR ['rchan', 'pts/9', '10.40.91.236', 'Wed', 'Feb', '14', '00:00:00', '2018', '-', 'Tue', 'Feb', '15', '16:57:02', '2018', '(00:03)']

rec rchan
4:6 n
7:8
Traceback (most recent call last):
File "so.py", line 44, in <module>
print("RESULT: ", normalized_rec(login_rec))
File "so.py", line 33, in normalized_rec
norm_rec = normalized_rec(new_rec)
File "so.py", line 8, in normalized_rec
jday = time.strftime('%j',time.strptime(' '.join(rec[4:6]+rec[7:8]),'%b %d %Y'))
File "/usr/lib64/python3.4/_strptime.py", line 501, in _strptime_time
tt = _strptime(data_string, format)[0]
File "/usr/lib64/python3.4/_strptime.py", line 344, in _strptime
(data_string, format))
ValueError: time data 'n' does not match format '%b %d %Y'

这很好地突出了这个问题:你写了 normalized_rec对记录列表进行操作,但您的递归调用为其提供了一条记录, 不是 在列表中:
        norm_rec = normalized_rec(new_rec)

因此,当递归尝试处理更改的记录时,它从第一个元素开始,字符串 rchan .

一个简单的解决方法是使递归对单个记录的列表进行操作:
        norm_rec = normalized_rec([new_rec])

这现在重复请求的次数,返回初始记录的版本列表,轻微处理:
RESULT:     [
['rchan', 'pts/9', '10.40.91.236', 'Tue', 'Feb', '13', '16:53:42', '2018', '-', 'Tue', 'Feb', '13', '23:59:59', '2018', '(00:03)'],
['rchan', 'pts/9', '10.40.91.236', 'Wed', 'Feb', '14', '00:00:00', '2018', '-', 'Wed', 'Feb', '14', '23:59:59', '2018', '(00:03)'],
['rchan', 'pts/9', '10.40.91.236', 'Thu', 'Feb', '15', '00:00:00', '2018', '-', 'Tue', 'Feb', '15', '16:57:02', '2018', '(00:03)']]

我希望这将使您转向下一组问题。

关于python - 时间数据 'n' 格式不匹配 '%b %d %Y' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50802674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com