我有一组查询,其中一些只是最终搜索字符串的一部分。我需要从很长的查询集合中清除部分字符串。是否可以在这样的数以百万计的集合中执行此操作的快速方法?

t = {u'house prices',
 u'how ',
 u'how man',
 u'how many animals go ex',
 u'how many animals go extinted eac',
 u'how many animals go extinted each ',
 u'how many species go',
 u'how many species go extin',
 u'how many species go extinet each yea',
 u'how many species go extinet each year?'}


我只想保留:

t = {u'house prices',
 u'how many species go extinet each year?',
 u'how many animals go extinted each '}


这是@Alex Hall的解决方案,已编辑为捕获最终字符串('-+-'的串联可完成此操作)

# Print out the unique strings
q = sorted(list(t)) + ['-+-']
for i in range(len(q) - 1):
    if not q[i+1].startswith(q[i]):
        print i, q[i]

最佳答案

对集合进行排序以创建列表q,然后对其进行迭代并在not q[i+1].startswith(q[i])处构建一个新的元素列表。应该合理地做好技巧。

关于python - 根据部分字符串删除冗余字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33043860/

10-13 07:20