我有一个没有空格的字符串。例如system-gnome-theme-60.0.2-1.el6
。
我必须检查其他100个这样的字符串(没有空格),这些字符串有一些先前指定的单词;例如gnome
,samba
。
我如何在python中完成?
samba
附加的字符串中可以有任何前缀或后缀。我必须检测它们,我该怎么办?
目前我已经这样做了:
for x in array_actual:
for y in array_config:
print x.startswith(y)
print ans
这是完全错误的,因为它只检查字符串的第一个单词。这个词可以在任何文本之间的任何地方。
答案 0 :(得分:2)
不使用str.startswith()
,而是使用in
运算符:
if y in x:
或使用|
管道运算符的正则表达式:
all_words = re.compile('|'.join([re.escape(line.split(None, 1)[0]) for line in array_config]))
for x in array_actual:
if all_words.search(x):
'|'.join([...])
列表推导首先会转义每个单词(确保元字符按字面匹配,并且不会被解释为正则表达式模式)。对于列表['gnome', 'samba']
,这将创建模式:
gnome|samba
匹配任何包含任何单词的字符串。