我有一个嵌套循环中的时间列表。在列表中,一些"AM"one_answers"PM"字符与mylist中的数字(如PM4(合并。我想把数字和"AM"、"PM"字符分开,在数字前面加上"-"。我该如何解决这个问题?
我试图在字符串中找到数字,并使用以下代码:
y = ''.join([n for n in mylist if n.isdigit()])
然后我想在枚举中使用它,但我不知道如何使用它。
mylist = [['x', '5 - 7:30 AM9:30 AM - 1 PM4 PM - 6 PM", "8 - 9:30 AM11:30 AM'],['y', '6 - 7:30 AM 9:30 AM - 1 PM6 PM - 7 PM", "6 - 8:30 AM9:30 AM']]
res= [['x', '5 - 7:30 AM - 9:30 AM - 1 PM - 4 PM - 6 PM", "8 - 9:30 AM - 11:30 AM'],['y', '6 - 7:30 AM 9:30 AM - 1 PM - 6 PM - 7 PM", "6 - 8:30 AM - 9:30 AM']]
使用re
的方法可以是:
for a in mylist:
for i,b in enumerate(a):
a[i] = re.sub(r'(AM|PM)(d+)',r'1 - 2',b)
根据Sushanth的评论,你可以在一行中使用列表版本:
[[re.sub("(AM|PM)(d+)", r"1 - 2", v) for v in l] for l in mylist]
用一种简单的方法参考以下代码:
mylist = [['x', '5 - 7:30 AM9:30 AM - 1 PM4 PM - 6 PM", "8 - 9:30 AM11:30 AM'],['y', '6 - 7:30 AM 9:30 AM - 1 PM6 PM - 7 PM", "6 - 8:30 AM9:30 AM']]
res = list()
for i in mylist:
inner = list()
for j in i:
j = j.replace('AM','AM - ')
j = j.replace('PM','PM - ')
j = j.strip().strip('-')
j = j.replace('- -','-')
j = j.replace(' - "','"')
inner.append(j.strip())
res.append(inner)
print(res)
这会给你想要的结果。