Pergunta

Esta é uma pergunta muito novato e eu provavelmente terá downvoted para ele, mas eu honestamente não poderia encontrar a resposta depois de pelo menos um googling hora. Eu aprendi a cortar cordas baseadas em "localizações exatas" onde você tem que saber exatamente onde a palavra termina. Mas eu não encontrar qualquer artigo que explica como fazê-lo nas cordas "não estáticas" que poderiam mudar.

Além disso, eu não quero usar string.split () neste caso, como é um pouco um exagero para o que eu preciso.

Basicamente, eu tenho uma string como esta:

myString = "!save python Python is a high-level object oriented language created by Guido van Rossum."
# the format is !save [singleword] [definition]

eu preciso "fatia" esta cadeia, mas eu não consigo descobrir uma maneira correta de fazê-lo.

Eu preciso salvar uma à variável o título (python, neste caso) ea definição de esta cadeia. Somethig como:

title = myString[1]
definition = myString[everything after string[1]

Eu não sei exatamente como fazer isso quando você tem uma corda dinâmica onde você não sabe onde cada palavra extremidades.

Eu gostaria muito de receber algumas indicações sobre quais as funções / métodos que eu deveria ler para archieve isso. Agradecemos antecipadamente.

Foi útil?

Solução

Por que é dividida exagero?

verb, title, definition = myString.split (' ', 2)

Outras dicas

Se você tem espaços entre o seu comando, o título, e definição você pode:

wordList = myString.split()
cmd = wordList[0] # !save
title = wordList[1] # python
definition = ' '.join(wordList[2:])  # Python is a high-level object oriented language created by Guido van Rossum.

Se você realmente prefere não usar dividir você poderia usar expressões regulares:

import re
m = re.match('(/S+)/s*(/S+)/s*(.*)')
cmd = m.group(1)
title = m.group(2)
definition = m.group(3)

A resposta selecionada (após PEP8ing):

verb, title, definition = my_string.split(' ', 2)

splits em um único espaço. É provável uma escolha melhor para dividir em corridas de espaço em branco, apenas no caso existem guias ou vários espaços em nenhum lado do título:

verb, title, definition = my_string.split(None, 2)

Considere também normalizar o espaço em branco na definição:

definition = ' '.join(definition.split())
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top