首页 > 解决方案 > 如何在列表的字符串中查找数字并将其替换为特定字符?

问题描述

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

标签: pythonstringlistconcat

解决方案


的方法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]

推荐阅读