Python中从含固定前缀的索引列提取名字子字符串的解决方案咨询
可行的名字提取方案
当然有办法实现啦!既然你已经明确知道前缀的固定长度是31位,我们可以基于这个条件用几种简洁的方式提取出目标名字:
方法一:切片+分割取首元素
这是最贴合你给出的str[31:]思路的扩展方案:
df["y"] = df.sent.str[31:].str.split().str[0]
原理很直观:先从第31位开始截取掉固定前缀后的剩余字符串,再按空格把字符串拆分成列表,列表的第一个元素就是我们要提取的名字。
方法二:切片+partition分割
str.partition()会把字符串按指定分隔符一次性分成「分隔符前内容、分隔符、分隔符后内容」三部分,直接取第一部分即可:
df["y"] = df.sent.str[31:].str.partition(' ')[0]
这个方法比split更轻量,因为它仅执行一次分割操作,不需要处理完整的分割列表。
方法三:正则表达式一步提取
如果想省去多步操作,也可以用正则直接匹配前缀后的名字部分:
df["y"] = df.sent.str.extract(r'^.{31}([A-Za-z]+)')
^.{31}:匹配开头的31个任意字符(也就是固定前缀)([A-Za-z]+):捕获后续连续的字母作为名字(如果名字包含连字符、撇号这类特殊字符,可以调整为([A-Za-z'-]+))
以上几种方法都能完美适配你的需求,根据自己的习惯选择就好~
内容的提问来源于stack exchange,提问作者Cecilie S. K
相关产品推荐
相关产品推荐

