[英]How to extract certain length of numbers from a string in python? [duplicate]
我有一個看起來像這樣的數據框:
description
1906 RES 330 ML
1906 RES 330ML
RES 335 c/6
RES 332 c/12
我想提取數字的三個連續數字並將其保存在新的“音量”列中。 我的代碼是這樣的:
df['volume'] = df['description'].str.extract('([([\d]*[\d]){3,3}?])')
預期結果應該是這樣的:
volume
330
330
335
332
但是,它給出了這樣的結果:
volume
1906
1906
335
332
誰能幫我修復這個代碼? 非常感謝!!!
可能有點矯枉過正,但如果您想確保不捕獲屬於 4 位數字的數字,您可以使用以下命令:
df['volume'] = df.description.str.extract(r'(?<!\d)(\d{3})(?!\d)', expand=False)
print(df)
description volume
0 1906 RES 330 ML 330
1 1906 RES 330ML 330
2 RES 335 c/6 335
3 RES 332 c/12 332
指定expand=False
,以便匹配僅作為一個pd.Series
返回。
正則表達式:
(?<!\\d)
- 指定在一組 3 位數字之前的任何東西都不是數字(\\d{3})
- 匹配 3 個數字(?!\\d)
- 指定一組 3 位數字之后的任何內容都不是數字你需要
[\\d]*
\\b
?
[]
您不需要:
()
此正則表達式將僅找到三位數字:
\b(\d{3})\b
您正在尋找的正則表達式是\\b[\\d]{3}\\b
有關\\b
更多信息,請參閱文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.