我的数据(csv)具有以下值 - user_id,time_free如下。
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中使用正则表达式。我没有得到理想的结果。 我希望Mon和时间分开。
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)
答案 0 :(得分:1)
您可以使用
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字母和2个小写字母\s*-\s*
- 用0+空格字符括起来的连字符[A-Z][a-z]{2}
- 一个大写的ASCII字母和两个小写的字母\s*
- 0+ whitespaces (\d?\d:\d\d\s*[aApP][Mm])
- 第2组(time
):
\d?
- 可选数字\d:\d\d
- 任意数字,:
,2位\s*
- 0+空格
- [aApP][Mm]
- AM
或PM
(不区分大小写)。