检查字符串是否包含列表项

OP

我有以下脚本检查字符串是否包含列表项:

word = ['one',
        'two',
        'three']
string = 'my favorite number is two'
if any(word_item in string.split() for word_item in word):
    print 'string contains a word from the word list: %s' % (word_item)

这可行,但是我正在尝试打印字符串包含的列表项。我究竟做错了什么?

布伦丹·朗(Brendan Long)

问题在于您使用的是if语句而不是for语句,因此您print只能(最多)运行一次(如果至少一个单词匹配),并且此时any已遍历整个循环。

这是您想要做的最简单的方法:

words = ['one',
         'two',
         'three']
string = 'my favorite number is two'
for word in words:
    if word in string.split():
        print('string contains a word from the word list: %s' % (word))

如果您出于某种原因希望此功能正常运行,可以执行以下操作:

for word in filter(string.split().__contains__, words):
    print('string contains a word from the word list: %s' % (word))

由于即使此问题与性能无关,也有人必须回答与性能相关的答案,所以将字符串拆分一次并根据要检查的单词数将其转换为set可能会更有效。也有用。


关于注释中的问题,如果要使用多个单词的“单词”,则有两个简单的选择:添加空格,然后在完整字符串中搜索单词,或带有单词边界的正则表达式。

最简单的方法是在要搜索的文本之前和之后添加一个空格字符,然后搜索' ' + word + ' '

phrases = ['one',
           'two',
           'two words']
text = "this has two words in it"

for phrase in phrases:
    if " %s " % phrase in text:
        print("text '%s' contains phrase '%s'" % (text, phrase))

对于正则表达式,只需使用\b边界一词:

import re

for phrase in phrases:
    if re.search(r"\b%s\b" % re.escape(phrase), text):
        print("text '%s' contains phrase '%s'" % (text, phrase))

哪一个是“ nicer”很难说,但是正则表达式的效率可能大大降低(如果这对您很重要)。


如果您不在乎单词边界,则可以执行以下操作:

phrases = ['one',
           'two',
           'two words']
text = "the word 'tone' will be matched, but so will 'two words'"

for phrase in phrases:
    if phrase in text:
        print("text '%s' contains phrase '%s'" % (text, phrase))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查字符串是否包含列表中的字母

来自分类Dev

检查字符串中是否包含单词列表

来自分类Dev

如何检查字符串是否包含列表/数组中的任何字符串

来自分类Dev

检查字符串是否不包含列表中的字符串

来自分类Dev

如何检查字符串是否包含列表中的字符串?

来自分类Dev

检查字符串 startWith 列表项值

来自分类Dev

检查字符串列表是否包含任何枚举字符串值

来自分类Dev

HQL检查字段是否包含字符串列表中的任何字符串

来自分类Dev

检查字符串列表是否包含字符串序列

来自分类Dev

C#检查字符串列表是否包含某些字符串

来自分类Dev

检查字符串是否包含任何顺序的字符串列表

来自分类Dev

如果不是英文字符,如何检查字符串是否包含列表

来自分类Dev

如何检查字符串是否包含不在列表中的字符?

来自分类Dev

PHP检查字符串是否包含数字并检查字符串长度

来自分类Dev

检查字符串是否包含子字符串列表并保存匹配的子字符串列表

来自分类Dev

检查字符串是否不包含Python中子字符串列表中的任何子字符串

来自分类Dev

检查字符串是否包含数组中的字符

来自分类Dev

检查字符串是否包含CJK(中文)字符

来自分类Dev

检查字符串中是否包含非法字符

来自分类Dev

如何检查字符串是否包含特定字符

来自分类Dev

检查字符串是否仅包含给定字符

来自分类Dev

检查字符串是否仅包含允许的字符

来自分类Dev

检查字符串是否仅包含ASCII字符?

来自分类Dev

如何检查字符串是否包含特殊字符(!@#$%^&*()_ +)

来自分类Dev

检查字符串是否仅包含“&”字符

来自分类Dev

如何检查字符串是否包含某些字符

来自分类Dev

PHP检查字符串是否包含特定字符

来自分类Dev

检查字符串中是否包含非法字符

来自分类Dev

检查字符串是否仅包含允许的字符

Related 相关文章

  1. 1

    检查字符串是否包含列表中的字母

  2. 2

    检查字符串中是否包含单词列表

  3. 3

    如何检查字符串是否包含列表/数组中的任何字符串

  4. 4

    检查字符串是否不包含列表中的字符串

  5. 5

    如何检查字符串是否包含列表中的字符串?

  6. 6

    检查字符串 startWith 列表项值

  7. 7

    检查字符串列表是否包含任何枚举字符串值

  8. 8

    HQL检查字段是否包含字符串列表中的任何字符串

  9. 9

    检查字符串列表是否包含字符串序列

  10. 10

    C#检查字符串列表是否包含某些字符串

  11. 11

    检查字符串是否包含任何顺序的字符串列表

  12. 12

    如果不是英文字符,如何检查字符串是否包含列表

  13. 13

    如何检查字符串是否包含不在列表中的字符?

  14. 14

    PHP检查字符串是否包含数字并检查字符串长度

  15. 15

    检查字符串是否包含子字符串列表并保存匹配的子字符串列表

  16. 16

    检查字符串是否不包含Python中子字符串列表中的任何子字符串

  17. 17

    检查字符串是否包含数组中的字符

  18. 18

    检查字符串是否包含CJK(中文)字符

  19. 19

    检查字符串中是否包含非法字符

  20. 20

    如何检查字符串是否包含特定字符

  21. 21

    检查字符串是否仅包含给定字符

  22. 22

    检查字符串是否仅包含允许的字符

  23. 23

    检查字符串是否仅包含ASCII字符?

  24. 24

    如何检查字符串是否包含特殊字符(!@#$%^&*()_ +)

  25. 25

    检查字符串是否仅包含“&”字符

  26. 26

    如何检查字符串是否包含某些字符

  27. 27

    PHP检查字符串是否包含特定字符

  28. 28

    检查字符串中是否包含非法字符

  29. 29

    检查字符串是否仅包含允许的字符

热门标签

归档