我需要帮助将唯一字符串提取到单独的列中。
df = pd.DataFrame({'File Name':['90.12.21 / 02.05 / XO3 File Name Type',
'10.22.43 / X.89 / XO20G9992 Document Internal Only',
'Phase 3',
'22.32.42.12 / 99.23 / XO2 Location Site 3: Park Triangle',
'38.23.99.22 / X.23 / XO28W9998 Block 4 Beach/Dock Camp',
'39.24.32.49 / 37.29 / Blue-print/Register Info Site (RISs)',
'23.21.53.32 / Q.21 / XO R9924 Location Place 5: Drive Place (Active)',
' 33.51.63.33 / X.21 / XO20W8812 Area Place 1: Beach Drive']})
这是数据框当前的样子:
| File Name |
|----------------------------------------------------------------------|
| 90.12.21 / 02.05 / XO3 File Name Type |
| 10.22.43 / X.89 / XO20G9992 Document Internal Only |
| Phase 3 |
| 22.32.42.12 / 99.23 / XO2 Location Site 3: Park Triangle |
| 38.23.99.22 / X.23 / XO28W9998 Block 4 Beach/Dock Camp |
| 39.24.32.49 / 37.29 / Blue-print/Register Info Site (RISs) |
| 23.21.53.32 / Q.21 / XO R9924 Location Place 5: Drive Place (Active) |
| 33.51.63.33 / X.21 / XO20W8812 Area Place 1: Beach Drive |
这就是我需要的样子:
| File Name |
|----------------------------------------|
| File Name Type |
| Document Internal Only |
| |
| Location Site 3: Park Triangle |
| Block 4 Beach/Dock Camp |
| Blue-print/Register Info Site (RISs) |
| Location Place 5: Drive Place (Active) |
| Area Place 1: Beach Drive |
这是我尝试的解决方案:
我知道str.extract(r'')
会将正则表达式提取到新列中。我还知道在正则表达式中,“正向后查找”将从字符串末尾选择我想要的所有内容。因此,我创建了一个正向回顾正则表达式来捕获我想要的大部分字符串: https://regexr.com/4t4ll 。这仍然不是一个完美的解决方案。
但即使当我尝试使用这行代码提取我的选择时: df['File Name'].str.extract(r'((?<=\/ XO\d |XO\d[0-9]\w\d\d\d\d | XO \w\d\d\d\d ).*)')
,我收到一条错误消息:“后视需要固定宽度模式。”
我需要帮助弄清楚如何使我的正则表达式在 str.extract(r'')
中工作如何使我的正则表达式捕获出现在每个条目末尾的所有字符串?
最佳答案
您可以使用
.*\s/(?:\s+XO[A-Z0-9\s]*\b)?\s+(.+)
请参阅regex demo .
详细信息
.*
- 除换行符之外的 0+ 个字符,尽可能多\s
- 空格/
- 一个/
字符(?:\s+XO[A-Z0-9\s]*\b)?
- 可选模式:\s+
- 1 个以上空格XO
-XO
[A-Z0-9\s]*
- 0+ 个大写字母或数字,后跟\b
- 单词边界
\s+
- 1 个以上空格(.+)
- 第 1 组(str.extract
将返回什么):除换行符之外的任何 1+ 个字符,尽可能多
在 Pandas 中,使用
df['Result'] = df['File Name'].str.extract(r'.*\s/(?:\s+XO[A-Z0-9\s]*\b)?\s+(.+)', expand=False).fillna('')
结果:
Result
0 File Name Type
1 Document Internal Only
2
3 Location Site 3: Park Triangle
4 Block 4 Beach/Dock Camp
5 Blue-print/Register Info Site (RISs)
6 Location Place 5: Drive Place (Active)
7 Area Place 1: Beach Drive
关于python - 正则表达式将唯一字符串提取到新列,出现错误 "look-behind requires fixed-width pattern",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59958054/