【发布时间】:2020-07-23 09:57:31
【问题描述】:
我有一个 DF,其中有一列带有这样的字符串:eth 2/2206/114/1/20 我需要提取每个值,因为我使用的是正则表达式。对于我使用的第一个值:
r'eth(.*?)/' 提取eth 和/ 之间的第一个值
r'/(.*?)/' 提取值2206
但是,如何提取下一个值?我需要忽略第一个定界符'/',无论如何要忽略第一个定界符以在两个下一个斜杠之间提取值 114,或者我怎样才能得到这个输出?
【问题讨论】:
-
编写一个匹配字符串格式的正则表达式,然后在适当的地方使用捕获组。或者,尝试使用命名捕获组获取所有信息,例如
df['colname'].str.extract(r'^eth\s+(?P<eth>\d+)/(?P<first>\d+)/(?P<second>\d+)/(?P<third>\d+)/(?P<fourth>\d+)$') -
@WiktorStribiżew 在这里使用更贪婪的正则表达式会更好(如果 / 的数量未知)像
(eth)(.*)(!?\s)这样 OP 可以在 delim 上拆分并拿走他需要的物品?
标签: python python-3.x regex pandas