如何拆分字符串并提取第一个连字符后的全部内容
问题
我需要提取字符串中第一个连字符后的完整内容,但使用str.split('-').str[1:]得到的是列表(例如处理abc-123-test时返回['123','test']),希望直接得到123-test这样的字符串格式。尝试过以下代码的最后两行,但结果不符合预期:
t = {'test_string':['abc-123-test']} test = pd.DataFrame(data=t) test['id'] = test['test_string'].str.split('-').str[0] test['id_string'] = test['test_string'].str.split('-').str[1:].astype(str) test['id_string'] = str(test['test_string'].str.split('-').str[1:].astype(str))
解决方案
方法1:限制拆分次数(推荐)
使用str.split的n参数,指定只拆分第一个连字符,拆分后的列表仅有两个元素,取索引1的元素就是目标内容:
test['id_string'] = test['test_string'].str.split('-', n=1).str[1]
方法2:用str.partition拆分
str.partition('-')会将字符串拆分为(前缀, 分隔符, 后缀)的元组,直接取第三个元素即可得到第一个连字符后的全部内容:
test['id_string'] = test['test_string'].str.partition('-')[2]
方法3:通过索引切片
先找到第一个连字符的位置,再从该位置的下一位开始切片:
test['id_string'] = test['test_string'].apply(lambda x: x[x.find('-') + 1:] if '-' in x else x)
内容的提问来源于stack exchange,提问作者Will L
相关产品推荐
相关产品推荐

