我正在尝试将这些数字字符串转换为“hh:mm:ss”格式。字符串都是不同的长度,这里有几个:
(212812, 218654, 232527, 235959, 0, 181240, 25959, 153834)
所以我想把上面的数字变成这个:
(21:28:12, 21:86:54, 23:25:27, 23:59:59, 00:00:00, 18:12:40, 2:59:59, 15:38:34)
我在使用相同的长度时遇到了麻烦,比如将0转换为00:00:00。
谢谢!
答案 0 :(得分:2)
正如其他人在评论中指出的那样,不清楚某些输入的正确答案是什么(例如1234,我的代码会说是00:12:34)。我还决定02:59:59比2:59:59更好的答案,因为他们渴望得到00:00:00。
所以这里是我的代码,它正确地处理了上述所有输入,模拟了我选择的2:59:59变体:
import re
def convert(numeric_time):
return ':'.join(re.findall('..', str(numeric_time).zfill(6)))
times = (212812, 218654, 232527, 235959, 0, 181240, 25959, 153834)
correct_answers = ['21:28:12', '21:86:54', '23:25:27', '23:59:59', '00:00:00', '18:12:40', '02:59:59', '15:38:34']
answers = map(convert, times)
for answer, correct_answer in zip(answers, correct_answers):
assert answer == correct_answer, '{} != {}'.format(answer, correct_answer)
<强>更新强>
由于有些人反对正则表达式,这里有一个不依赖它的类似版本:
def convert(numeric_time):
padded_time = str(numeric_time).zfill(6)
return ':'.join(padded_time[i:i+2] for i in range(0, len(padded_time), 2))
答案 1 :(得分:1)
好吧,因为我们在这里编写答案是一个不使用正则表达式的“解决方案”:
In [3]: def weird_time_format(fmt):
...: fmt = str(fmt)
...: hours = fmt[:2].ljust(2, '0')
...: mins = fmt[2:4].ljust(2, '0')
...: secs = fmt[4:6].ljust(2, '0')
...: return ':'.join((hours, mins, secs))
...:
In [4]: weird_time_format(212812)
Out[4]: '21:28:12'
这利用了以下事实:字符串切片对于超出范围的索引很好并且返回一个空字符串而不是抛出错误:
In [1]: ''[1:2]
Out[1]: ''
In [2]: ''[1:2].ljust(2, '0')
Out[2]: '00'
以下是您的示例输入的结果:
In [5]: example_input = (212812, 218654, 232527, 235959, 0, 181240, 25959, 153834)
In [6]: tuple(map(weird_time_format, example_input))
Out[6]:
('21:28:12',
'21:86:54',
'23:25:27',
'23:59:59',
'00:00:00',
'18:12:40',
'25:95:90',
'15:38:34')
自从我提出来之后,它对1234
做了什么:
In [7]: weird_time_format(1234)
Out[7]: '12:34:00'
好吧,我觉得(有点)不好吃。如果你真的对这种方法感兴趣,这将更好地工作,更符合其他答案的输出:
In [3]: def weird_time_format(fmt):
...: fmt = str(fmt).rjust(6, '0')
...: return ':'.join((fmt[:2], fmt[2:4], fmt[4:6]))
答案 2 :(得分:0)
这是另一种尝试。
如果输入字符串长度小于0
,则基本概念是添加6
。
a = (212812, 218654, 232527, 235959, 0, 181240, 25959, 153834)
input_list = map(str,a)
for input in input_list:
if len(input) != 6:
input = ''.join(['0' for i in range((6 - len(input)))]+list(input))
print ':'.join([input[i:i+chunk_size] for i in range(0,len(input),len(input)/3)])
<强>结果强>
21:28:12
21:86:54
23:25:27
23:59:59
00:00:00
18:12:40
02:59:59
15:38:34
答案 3 :(得分:0)
希望这会有所帮助:
jstring JNICALL Java_com_example_mayankvijh_test_1app_MainActivity_getMessage(JNIEnv *env, jobject thiz) {
return (*env)->NewStringUTF(env,"HELLO");
}
<强>输出强> 使用一些测试数据
data = (212812, 218654, 232527, 235959, 0, 181240, 25959, 153834)
time = map(str, data) #int to string
def conv(time_array):
for t in time_array:
if(len(t) != 6):
t = str(t.zfill(6)) #filling 0's if less than 6
print ':'.join(t[i:i + 2] for i in range(0, len(t), 2)) #adding ':'
conv(time)