如何在列表的字符串中查找数字并用特定字符替换它?

2024-06-26 13:59:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个嵌套循环中的时间列表。在列表中,一些“AM”和“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']]

Tags: 字符串代码in列表for时间数字am
2条回答

使用^{}的方法可以是:

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)

这将为您提供所需的结果

相关问题 更多 >