簡體   English   中英

如何在 python 中用 hh:mm 替換正則表達式模式 hh:mm:ss

[英]How to replace regex pattern hh:mm:ss with hh:mm in python

如果這是一個簡單的問題,我很抱歉,但我有一個 csv 文件,時間格式如下: hh:mm:ss

該文件的摘錄如下所示:

column_name
00:00:00
01:00:00
02:00:00
03:00:00
...
23:00:00
00:00:00

我有以下正則表達式來匹配所有這些時間[0-9]{2}[:][0-9]{2}[:][0-9]{2}

我的問題是如何在 python 腳本中刪除冒號和秒( :ss ),從根本上將格式從hh:mm:ss更改為hh:mm

我設法通過使用這行代碼將所有-更改為/

df['column_name'] = df['column_name'].str.replace('-', '/')

我嘗試使用這條線:

df['column_name'] = [re.sub(r'[0-9]{2}[:][0-9]{2}[:][0-9]{2}', r'[0-9]{2}[:][0-9]{2}', str(x)) for x in df['column_name']]

但這一直更改為[0-9]{2}[:][0-9]{2}

我也嘗試只使用切片,例如[:-3]但我無法讓它工作:

df['column_name'] = [re.sub(r'[0-9]{2}[:][0-9]{2}[:][0-9]{2}', [:-3], str(x)) for x in df['column_name']]

任何幫助將不勝感激,謝謝

您可以使用str對字符串進行切片:

df['column_name'] = df['column_name'].str[:-3]

或者:

df['column_name'] = df['column_name'].str.rsplit(':', 1).str[0]

如果您想使用正則表達式來解決這個問題,請使用捕獲組:

df.column_name.str.replace(r'(\d{2}):(\d{2}):(\d{2})', r'\1:\2', regex=True)

要定義捕獲組,請將其括在括號中。 然后,您可以使用組索引(從一個開始)引用捕獲的字符串。

另外,需要注意的是,由於這些組被稱為\<group-number> ,因此需要使用原始正則表達式字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM