regex搜索有效的tim

2024-10-01 11:20:20 发布

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

我的数据(csv)有以下值-用户id、空闲时间如下。你知道吗

user1   Mon-Wed 10:30 am - 1:00 pm
user2   Mon-Thu 1:00 pm - 5:00 pm , Fri 10:30 am - 2:00 pm

我试图在Python中使用regex。我没有得到想要的结果。 我希望每个星期一和每段时间都能分头来。你知道吗

import csv
import re

with open('myfile.csv') as csvDataFile:
    csvReader = csv.reader(csvDataFile)
    for row in csvReader:
        pattern = re.compile("([A-Z][a-z][a-z])\S-(\S?)\d?\d:\d\d ] [ap][m]")
        for (l, n) in re.findall(pattern,row[1]):
            print(l)

Tags: csv数据用户inimportreidfor
1条回答
网友
1楼 · 发布于 2024-10-01 11:20:20

你可以用

r'\b([A-Z][a-z]{2})\s*-\s*[A-Z][a-z]{2}\s*(\d?\d:\d\d\s*[aApP][Mm])'

参见regex demo

细节

  • \b-单词边界
  • ([A-Z][a-z]{2})-组1(Mon):一个大写ASCII字母和两个小写字母
  • \s*-\s*-用0+空格字符括起来的连字符
  • [A-Z][a-z]{2}-一个大写ASCII字母和两个小写字母
  • \s*-0+空格
  • (\d?\d:\d\d\s*[aApP][Mm])-第2组(time):
    • \d?-可选数字
    • \d:\d\d-任意数字,:,2位
    • \s*-0+空格 -[aApP][Mm]-AMPM(不区分大小写)。你知道吗

相关问题 更多 >