Python: 3 - сделать строку после найденных ключевых слов переменной? - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь найти элегантный (простой) способ сохранения подстроки в строке в качестве переменной, если я не знаю, каким будет слово, но я знаю, что это за четыре слова перед ним .

Если строка («сбросить пароль для johnny.mnemonic»), мне нужно иметь возможность хранить строку johnny.mnemonic после того, как я нашел подстроку? Но как?

string = " will you reset password for johnny.mnemonic please"
substring = "reset password for"


if string.find(substring) is not -1:
    print("i found the substring to request password reset")
    #now add the next sub-string to as a variable here, user should be be next string over
else:
    print("sorry, no request found.")

Ответы [ 3 ]

0 голосов
/ 08 мая 2018
input_string = " will you reset password for johnny.mnemonic please"
substring = "reset password for " # keep in mind the ending space
first_index = input_string.find(substring)
if first_index != -1: # if found
    last_index = first_index + len(substring)
    print(input_string[last_index:].split(" ")[0]) # split into words and get the first word

Выход:

johnny.mnemonic

В основном он будет искать «сброс пароля для», а затем получит следующее слово после подстроки

0 голосов
/ 08 мая 2018

Я предполагаю, что вы хотите хранить информацию, касающуюся определенного человека, и получать эту информацию, используя имя этого человека. Я бы предложил использовать словарь так:

s = 'reset the password for johnny.mnemonic'
t = 'create the password for another.guy'
u = 'tell the password for a.gal'

d = {}
d[s.split()[-1]] = s
d[t.split()[-1]] = t
d[u.split()[-1]] = u


for k, v in d.items():
    print(k, '\n\t', v)
0 голосов
/ 08 мая 2018

Может быть, это подходящее решение для вашей ситуации:

cstring = " will you reset password for johnny.mnemonic please"
substring = "reset password for"

if substring in cstring:
    words = cstring.split()
    person = words[words.index('for')+1]
else:
    person = False

if person:
    #do stuff
...