Python 查找和提取字符串中的多个子字符串?
查看之后,我无法成功地在数据上实现子字符串拆分。对于我的特殊情况,我有一组字符串,每个字符串都有一个子字符串需要提取。字符串在列表中分组在一起,我的数据是NBA位置。我需要从每个字符串中拉出位置(PG、SG、SF、PF或C)。某些字符串将具有多个位置。这是数据Python 查找和提取字符串中的多个子字符串?,python,regex,string,substring,Python,Regex,String,Substring,查看之后,我无法成功地在数据上实现子字符串拆分。对于我的特殊情况,我有一组字符串,每个字符串都有一个子字符串需要提取。字符串在列表中分组在一起,我的数据是NBA位置。我需要从每个字符串中拉出位置(PG、SG、SF、PF或C)。某些字符串将具有多个位置。这是数据 text = ['Chi\xa0SG, SF\xa0\xa0DTD','Cle\xa0PF'] 理想情况下,代码应该查看第一个字符串,'Chi\xa0SG,SF\xa0\xa0DTD',并返回两个位置。代码应该查看第二个字符串并返回['
text = ['Chi\xa0SG, SF\xa0\xa0DTD','Cle\xa0PF']
理想情况下,代码应该查看第一个字符串,'Chi\xa0SG,SF\xa0\xa0DTD'
,并返回两个位置。代码应该查看第二个字符串并返回['PF']
杠杆(零宽度)环视:
(?<!\w)PG|SG|SF|PF|C(?!\w)
heemayl的回答是最正确的,但您可能不需要在每个子字符串中使用逗号分隔并只保留最后两个字符(或者在“C”的情况下,保留最后一个字符)
s = 'Chi\xa0SG, SF\xa0\xa0DTD'
fin = list(map(lambda x: x[-2:] if x != 'C' else x[-1:],s.split(',')))
我现在无法测试这一点,因为我在chromebook上,但它应该可以工作。为什么不使用word boundary
r'\b(PG | SG | SF | PF | C)\b'
为了清晰起见,您能否添加完整的预期输出?这就是你要找的吗<代码>[re.findall(r'\b(PG | SG | SF | PF | C)\b',s)用于文本中的s]我目前没有办法测试它,但我还是尝试了一下
s = 'Chi\xa0SG, SF\xa0\xa0DTD'
fin = list(map(lambda x: x[-2:] if x != 'C' else x[-1:],s.split(',')))