簡體   English   中英

使用正則表達式提取python字符串中的子字符串

[英]Extracting substring in python string using regular expression

我有一個這樣的熊貓專欄:

LOD-NY-EP-ADM
LOD-NY-EC-RUL
LOD-NY-EC-WFL
LOD-NY-LSM-SER
LOD-NY-PM-MOB
LOD-NY-PM-MOB
LOD-NY-RMK
LOD-NY-EC-TIM

我希望新列中的輸出為

EP
EC
EC
LSM
PM
PM
RMK
EC

我嘗試了這個:

pattern=df.column[0:10].str.extract(r"\w*-NY-(.*?)-\w*",expand=False)

盡管它適用於所有內容,但無法得到RMK並給出NaN,因為此后沒有任何內容,並且它查找-\\ w零次或多次。 但是,如果在RMK之后什么也沒有,那應該可以工作。

知道發生了什么事嗎?

如果熊貓的語法不熟悉,我們可以只使用它們的數組並使用正則表達式。

您可以只使用常規的python嗎? 假設df是您的數據框,而row是您的行的名稱。

series = df.row
new_list =  [i.split('-')[2] for i in series]
new_series = pd.Series(new_list)
pattern=df.column[0:10].str.extract(r"\w*-NY-(\w+)",expand=False)

參見https://regex101.com/r/3uDpam/3

您正則表達式的意思字符串匹配必須有3 -字符。 我更改了它,所以最后-XX可能發生0或1次。

更新:已更改,因此第二組不被捕獲(已添加?: :)

更新:感謝卡西米爾,在模式結束時刪除了無用的組

暫無
暫無

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

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