python长文本中的特定单词搜索

2024-04-26 00:32:25 发布

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

这是一个非常基本的问题,但是有没有一种方法可以让我在一个包含我想要的单词的列表中提取一个字符串呢?比如:

wordNeeded=str(input("blue or red?"))

list1=["A blue car", "A blue bike", "A red bike"]

然后它将提取包含WordRequired中确切的单词的字符串


Tags: or方法字符串列表inputbluered单词
3条回答
def printList(list, word, list_size): 
    map = [0] * NO_OF_CHARS 

    for i in word: 
        map[ord(i)] = 1


    word_size = len(word) 
    for i in list: 
        count = 0
        for j in i: 
            if map[ord(j)]: 
                count+=1

                map[ord(j)] = 0
        if count==word_size: 
            print i 

        # Set the values in map for next item 
        for j in xrange(len(word)): 
            map[ord(word[j])] = 1
printList(list1, wordNeeded, len(list1))

您可以像这样使用for循环:

for (word in list1):
  if (wordNeeded in item):
      ...

实际的单词搜索非常简单,已经讨论了很多时间:

Python - Check If Word Is In A String

https://www.geeksforgeeks.org/python-string-find/

在其他方式中,您可以使用列表理解:

list1 = ["A blue car", "A blue bike", "A red bike"]
result = [item for item in list1 if wordNeeded in item]
print(result)
# ["A red bike"]

或者,您可以结合lambda函数查看filter

result = filter(lambda x: wordNeeded in x, list1)
print(list(result))

后者在这种情况下更为复杂,但会产生相同的结果。


至于精确单词,您需要在(+最后小写)之前拆分每个项目:
wordNeeded = "blue"
list1 = ["A blue car", "A blue bike", "A red bike", "bluebells are cool."]

result = [item for item in list1
          if any(wordNeeded.lower() == x.lower() for x in item.split())]
print(result)
# ['A blue car', 'A blue bike']

或者使用带有单词边界的正则表达式:

import re
rx = re.compile(r'\b{}\b'.format(wordNeeded), flags=re.I)
result = [item for item in list1 if rx.search(item)]
print(result)

相关问题 更多 >