如何在列表的字符串中查找数字并将其替换为特定字符



我有一个嵌套循环中的时间列表。在列表中,一些"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)

这会给你想要的结果。

最新更新