python - 在特定模式之前删除字符串的一部分
问题描述
我有一个熊猫数据框,其中有一列我必须在其中检索特定名称。唯一的问题是,这些名称并不总是在同一个地方,并且这些列的所有值的长度都不相同,所以我不能使用 split 函数。但是,我注意到在这些名称之前,总是有 4 到 7 位数字的组合。我相信这是名称的标识符。
那么如何使用正则表达式来遍历该列并检索我需要的名称。以下是 jupyter notebook 中的一个示例:
df['info']
csx_Gb009_broken screen_231400_Iphone 7
000345_SamsungS8_tfes_Vodafone_is56t34_3G
Ins45_56003_Huawei P8_
我想要的是这样的:
df['Phones']
Iphone 7
SamsungS8
Huawei P8
我想要像上面那样知道这些名称出现在 4 到 7 位数字的组合之前并以下划线结尾。
解决方案
您可以使用
df['Phones'] = df['info'].str.extract(r'\d{4}_([^_]+)')
模式匹配:
\d{4}
- 4 位数_
- 一个下划线([^_]+)
- 捕获组 1(此值将由 返回str.extract
):一个或多个除_
.
请参阅正则表达式演示。
推荐阅读
- android - 在 Canvas Android 上绘制 MapView
- javascript - 使用 useCallback 钩子的正确方法是什么?
- ssl - 错误代码:SEC_ERROR_BAD_SIGNATURE 在 Tomcat 上安装了 SSL 证书
- c# - 如何为 C# 项目生成 .tlh 文件
- php - 如果条件适用,Haversine 公式 PHP 将添加到第二个表中
- android - Seekbar - 在拇指上方对齐值标签
- javascript - 计划的 Cloud Function 内的 HTTP POST 请求不起作用
- json - 为什么我无法使用 SQL 访问 JSON 的子节点?
- r - 简单的 R Shiny App 选择具有特定单词的文档
- python - 带有对象子参数的函数的类型提示不接受子类