2015-08-17 2 views
1

Там в строку так:Python дело с сравнения строк

mystr = 'account_id 37318 not found' 

Я задаюсь вопросом, как написать условие лучше:

if 'account_id' not in str and 'not found' not in str: 
    doSomething() 

Я думаю, там должно быть что-то вроде:

if 'account_id' + %any substring% + 'not found' not in str: 
    doSomething() 

Возможно, регулярное выражение может помочь, но я не очень хорошо его использую.

Заранее спасибо.

+3

firstly ... 'str' - очень плохое имя переменной. –

+0

о, да, конечно) это просто пример. Я отредактирую – Leo

ответ

4

Вы можете использовать all и не использовать встроенные ключевые слова в качестве имен переменных.

if all(i not in s for i in ('not found', 'account_id')): 

Пример:

>>> tr = 'account_id 37318 not found' 
>>> tr1 = '2735723' 
>>> all(i not in tr for i in ('not found', 'account_id')) 
False 
>>> all(i not in tr1 for i in ('not found', 'account_id')) 
True 
>>> 
2

Это может помочь.

import re 
string = 'account_id 37318 not found' 

match = re.search(r'\baccount_id\b.*?\bnot found\b',string) 
if match: 
    print 'Do something' 
else: 
    print 'Do nothing' 

Дай мне знать, если это поможет :).

+0

это тоже хорошо, хорошо работает. thx – Leo

+1

, вероятно, лучше использовать '\ baccount_id \ b. *? \ bnot found \ b' (не нужно описывать начало и конец строки, а начало шаблона с литеральной строкой всегда более эффективно). –

+0

Отредактировано спасибо за предложения –

Смежные вопросы