isin()
идеально подходит, если у вас есть список точных совпадений, но если у вас есть список частичных совпадений или подстрок, которые вы ищете, вы можете фильтровать с помощью метода str.contains
и регулярного выражения.
Например, если мы хотим вернуть DataFrame, где все идентификаторы запаса, начинающиеся с '600'
, затем сопровождаются любыми тремя цифрами:
>>> rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')] # ^ means start of string
... STK_ID ... # [0-9]{3} means any three digits
... '600809' ... # $ means end of string
... '600141' ...
... '600329' ...
... ... ...
Предположим теперь, что мы имеем список строк, которым мы хотим, чтобы значения в 'STK_ID'
заканчивались, например
endstrings = ['01$', '02$', '05$']
. Мы можем присоединить эти строки с помощью регулярного выражения или символа |
и передать string в str.contains
для фильтрации DataFrame:
>>> rpt[rpt['STK_ID'].str.contains('|'.join(endstrings)]
... STK_ID ...
... '155905' ...
... '633101' ...
... '210302' ...
... ... ...
Наконец, contains
может игнорировать регистр (установкой case=False
), позволяя вам быть более общим при указании строк, которые вы хотите сопоставить .
Например,
str.contains('pandas', case=False)
будет соответствовать PANDAS
, PanDAs
, paNdAs123
и т. д.
awk '/^PermitRootLogin yes$/{f=1} /^Match/{exit} END{exit !f}' /etc/ssh/sshd_config
Permit...
, он устанавливает флагf
, чтобы сказать это. Если он найдетMatch
, он перестает читать входной файл. При выходе из скрипта он устанавливает статус выхода 0, если установлен флагf
, 1 в противном случае. Обратите внимание, чтоexit
в главном корпусе awk означаетtake me to the END section
, аexit
в секции END означаетquit the program with the specified exit status
. – Ed Morton 14 August 2013 в 14:42