python 中的正则表达式用于时间格式后跟逗号和三位数字
Regex in python for time format followed by comma and three digits
我有一个包含数千种时间格式的文件。其中一些采用标准格式,而另一些则后跟一个逗号和三个数字,如下所示:
Standard format: 00:00:44
Followed by comma and three digits: 00:00:46,235
我已经使用以下正则表达式删除了标准格式:
text = re.sub(r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$)', '', text)
没关系。但是对于时间格式后跟逗号和三位数字,到目前为止我没有尝试过帮助我删除它们。请问,我怎样才能删除这个奇怪的时间格式模式?
快速而肮脏的方法是使用 split()
:
text = text.split(",")[0]
text = re.sub(r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$)', '', text)
您还可以更新您的正则表达式以在末尾添加一个可选部分。
text = re.sub(r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d),?\d{0,3}$', '', text)
使用re.sub
:
inp = "Followed by comma and three digits: 00:00:46,235"
output = re.sub(r'\b(\d{2}:\d{2}:\d{2}),\d{3}', r'', inp)
print(output) # Followed by comma and three digits: 00:00:46
您的正则表达式符合标准时间格式。
r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$)'
只需在末尾添加逗号部分,并将其设为可选。
r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:,\d{3})?$)'
(?:,\d{3})?
的解释:
(?: ) Non-capturing group
,\d{3} Comma, then three digits
? Match zero or one times
我有一个包含数千种时间格式的文件。其中一些采用标准格式,而另一些则后跟一个逗号和三个数字,如下所示:
Standard format: 00:00:44
Followed by comma and three digits: 00:00:46,235
我已经使用以下正则表达式删除了标准格式:
text = re.sub(r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$)', '', text)
没关系。但是对于时间格式后跟逗号和三位数字,到目前为止我没有尝试过帮助我删除它们。请问,我怎样才能删除这个奇怪的时间格式模式?
快速而肮脏的方法是使用 split()
:
text = text.split(",")[0]
text = re.sub(r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$)', '', text)
您还可以更新您的正则表达式以在末尾添加一个可选部分。
text = re.sub(r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d),?\d{0,3}$', '', text)
使用re.sub
:
inp = "Followed by comma and three digits: 00:00:46,235"
output = re.sub(r'\b(\d{2}:\d{2}:\d{2}),\d{3}', r'', inp)
print(output) # Followed by comma and three digits: 00:00:46
您的正则表达式符合标准时间格式。
r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$)'
只需在末尾添加逗号部分,并将其设为可选。
r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:,\d{3})?$)'
(?:,\d{3})?
的解释:
(?: ) Non-capturing group
,\d{3} Comma, then three digits
? Match zero or one times