我从其他答案中知道,在短字符串上使用Regex上的string.split()会快得多。我正在处理的特定脚本要求我在定界符上分割字符串,并根据分割后的分隔符数以特定方式分析每个分割。例如,我的字符串可能看起来像abd-123-32-few-333-1212等。在这种情况下,分隔符为'-'。根据情况,我将需要部分拆分或全部拆分(又名,在本示例中,我可能需要32和333,并且我需要知道32在第二个破折号之后,而33在第四个破折号之后) 。
我当前的解决方案是拆分定界符,然后遍历该列表以获取所需的值。我很好奇的是,是否有更好/更快的方法可以做到这一点。我已经确认Regex速度较慢,无法立即满足我的需求……还有其他建议吗?
最佳答案
这可能可以解决您的问题,尽管由于您没有发布代码,所以我不知道它是相似还是不同,或者变慢还是变快:
s = 'abd-123-32-few-333-1212'
check = {'32', '333'}
s = s.split('-')
print(dict((y, x) for (x, y) in enumerate(s) if y in check))
打印:
{'32': 2, '333': 4}
FWIW,您可能应该在函数内部而不是在脚本主体中运行这样的代码,因为本地查找比全局查找要快得多。