python - 仅提取字母和第一个数字
问题描述
我正在使用包含字母、特殊字符和数字的数据框。我的目标是提取所有字母和第一个数字。所有数字总是出现在字母和特殊字符之后;但是,某些字母可能会出现在特殊字符之后。请参见下面的示例:
d = {'col1': ['A./B. 1234', 'CDEF/G5.','AB./C23']}
df = pd.DataFrame(data=d)
print(df)
# col1
# 0 A./B. 1234
# 1 CDEF/G5.
# 2 AB./C23
我查找了许多变体,但我不知道如何处理特殊字符./
等。
df.col1.str.extract('([A-Za-z\d]+)')
# 0
# 0 A
# 1 CDEF
# 2 AB
这给了我所有的字母和数字,直到它到达一个特殊字符。最终我想得到以下输出:
AB1
CDEFG5
ABC2
我是正则表达式的新手。
解决方案
您需要提取直到并包括第一个数字的所有字符,然后用空字符串替换任何非字母/数字字符:
d = {'col1': ['A./B. 1234', 'CDEF/G5.','AB./C23']}
df = pd.DataFrame(data=d)
df.col1.str.extract(r'^([^\d]+\d)').replace('[^A-Za-z0-9]', '', regex=True)
输出:
0
0 AB1
1 CDEFG5
2 ABC2
推荐阅读
- node.js - 用于 Node.js 的 Microsoft Bot Framework 3.15 中的“reloadAction”未传递“dialogArgs”
- apache-spark - 如何计算执行器内存、执行器数量、执行器核心数和驱动程序内存以使用 Spark 读取 40GB 的文件?
- javascript - 在 Script#dangerouslySetInnerHTML 中转义 HTML 特殊字符
- node.js - 我需要修复与离开服务器的人进行交流并跟踪他们的邀请者 Node js Discord 的代码
- javascript - 从可能包含函数的对象中获取展平键
- java - Java Boolean.class 如何获取每个复选框
- lua - lua中nil的类型和nil的类型有什么区别?
- css - 没有 CSS 关键帧动画(Mozilla Firefox)
- dataframe - Pyspark 中的动态 window.partitionBy 列
- docker - Dockerized nginx 无法加载证书