在字符串中查找和提取多个子字符串?

2024-10-06 11:19:29 发布

您现在位置:Python中文网/ 问答频道 /正文

在查看了afewsimilarquestions之后,我无法成功地对数据实现子字符串拆分。对于我的具体情况,我有一堆字符串,每个字符串都有一个子字符串需要提取。字符串被分组在一个列表中,我的数据是NBA位置。我需要从每个字符串中拉出位置(“PG”、“SG”、“SF”、“PF”或“C”)。某些字符串将有多个位置。这是数据。你知道吗

text = ['Chi\xa0SG, SF\xa0\xa0DTD','Cle\xa0PF']

理想情况下,代码应该查看第一个字符串'Chi\xa0SG, SF\xa0\xa0DTD',并返回['SG','SF']这两个位置。代码应该查看第二个字符串并返回['PF']。你知道吗


Tags: 数据字符串代码text列表sfsgpg
2条回答

heemayl的回答是最正确的,但是您可能不需要在每个子字符串中使用逗号分隔并只保留最后两个字符(或者在'C'的情况下,保留最后一个字符)。你知道吗

s = 'Chi\xa0SG, SF\xa0\xa0DTD'
fin = list(map(lambda x: x[-2:] if x != 'C' else x[-1:],s.split(',')))

我现在不能测试这个,因为我在chromebook上,但它应该可以工作。你知道吗

杠杆(零宽度)环视:

(?<!\w)PG|SG|SF|PF|C(?!\w)
  • (?<!\w)是零宽度负lookback模式,确保所需的匹配前面没有任何字母数字

  • 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']

相关问题 更多 >