如何在文本中找到单词?

时间:2018-02-02 15:41:36

标签: python

我必须找到文字中是否有单词。我必须在FPS中出现PS 18 26888 12345。在此,它应检测PS,但'F'中不存在'PS 18 26888 12345'。我试过了

if "FPS" in "PS 18 26888 12345":
    --executing following code

谢谢。

4 个答案:

答案 0 :(得分:2)

if "FPS" in "PS 18 26888 12345":

这会完整地查找子字符串"FPS"(因此'ab' in 'abba'True'abc' in 'abba'False),但我认为您要查找是否字符串中包含"F""P""S"中的任何一个。在这种情况下,您应该使用:

if any(char in "PS 18 26888 12345" for char in "FPS"):

答案 1 :(得分:0)

A = "FPS"
S = 'PS 18 26888 12345'

def checkValue(A, S):
    has_value = False
    while A:
        if A in S:
            has_value = True
            break
        else:
            A = A[1:]
    return has_value

if checkValue(A, S):
    print "Ok!!!"

答案 2 :(得分:0)

如果您想查找文本中包含的所有内容:

from itertools import  combinations,chain

text =  "PS 18 26888 12345"
sear = "FPS"

comb = chain.from_iterable( combinations(sear, r = length) 
                            for length in range(1,len(sear)+1))

for f in comb:
    lu = ''.join(f)
    if ''.join(lu) in text:
        print(text, " contains ", lu)

输出:

PS 18 26888 12345  contains  P
PS 18 26888 12345  contains  S
PS 18 26888 12345  contains  PS

comb = chain.from_iterable( combinations(sear, r = length) 
                            for length in range(1,len(sear)+1))

创建长度为sear的{​​{1}}的所有组合。 对于[1, 2, 3, ..., len(sear)],这是

FPS

使用'.join(..)连接回一个字符串,并且每个字符串都用你的大字符串进行检查。

铜工:

itertools.chain.from_iterable
itertools.combinations

“机制”在itertools页面的power-recipies中记录为('F',) ('P',) ('S',) ('F', 'P') ('F', 'S') ('P', 'S') ('F', 'P', 'S')

powerset

我修改为不包含空元组

def powerset(iterable): "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(len(s)+1)) 本身是一个可迭代的,所以你只能“使用”它一次,如果你需要它多一次就把它保存到列表中:

comb

答案 3 :(得分:0)

如果您愿意,可以尝试这种方法:

data_1='PS 18 26888 12345'
data_2='FPS'


print(list(map(lambda x:" ".join(list(filter(lambda y:x in data_1,x))),data_2)))

输出:

['', 'P', 'S']