我试图在字符串中将时间与 AM 分开。 代码
content= "11:20pm"
content = re.findall(r"[^\W\d_]+|\d+", content)
print(content)
我期望 ['11:20','pm']
但我的代码得到 ['11','20','pm']
我该怎么办?
答案 0 :(得分:2)
您可以通过将 (?::\d+)?
模式添加到 \d+
替代项来匹配时间:
content= "11:20pm"
content = re.findall(r"[^\W\d_]+|\d+(?::\d+)?", content)
print(content) # => ['11:20', 'pm']
参见 Python demo 和 regex demo。
请注意,您可能希望扩展模式以匹配浮点值,如果是,则需要使用 r"[^\W\d_]+|\d+(?:[:.]\d+)?"
。
详情:
[^\W\d_]+
- 一个或多个字母|
- 或\d+
- 一位或多位数字(?::\d+)?
- 一个`:~ 和一个或多个数字的可选序列。答案 1 :(得分:2)
如果您需要处理个位数,您可以将时间与 \d\d:\d\d
或 \d\d?:\d\d
匹配,然后将 am/pm 的内容与文本的 \w\w
匹配。这使正则表达式更具可读性
content= "11:20pm"
content = re.findall(r"\d\d?:\d\d|\w\w", content)
print(content)