在查看a few similar questions后,我无法在数据上成功实现子字符串拆分。对于我的具体情况,我有一堆字符串,每个字符串都有一个我需要提取的子字符串。这些字符串在一个列表中组合在一起,我的数据是NBA职位。我需要提取职位(' PG',' SG',' SF',' PF'或' C')来自每个字符串。有些字符串会有多个位置。这是数据。
text = ['Chi\xa0SG, SF\xa0\xa0DTD','Cle\xa0PF']
理想情况下,代码应该查看第一个字符串'Chi\xa0SG, SF\xa0\xa0DTD'
,然后返回['SG','SF']
这两个位置。代码应查看第二个字符串并返回['PF']
。
答案 0 :(得分:2)
杠杆(零宽度)外观:
(?<!\w)PG|SG|SF|PF|C(?!\w)
(?<!\w)
是零宽度负向后视模式,确保所需的匹配不在任何字母数字之前
PG|SG|SF|PF|C
匹配任何所需的模式
(?!\w)
是零宽度负前瞻模式,确保匹配不会被任何字母数字所跟随
示例:强>
In [7]: s = 'Chi\xa0SG, SF\xa0\xa0DTD'
In [8]: re.findall(r'(?<!\w)PG|SG|SF|PF|C(?!\w)', s)
Out[8]: ['SG', 'SF']
答案 1 :(得分:0)
s = 'Chi\xa0SG, SF\xa0\xa0DTD'
fin = list(map(lambda x: x[-2:] if x != 'C' else x[-1:],s.split(',')))
我现在无法测试这个,因为我在Chromebook上,但它应该有效。