我必须找到文字中是否有单词。我必须在FPS
中出现PS 18 26888 12345
。在此,它应检测PS,但'F'
中不存在'PS 18 26888 12345'
。我试过了
if "FPS" in "PS 18 26888 12345":
--executing following code
谢谢。
答案 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']