Necesito para obtener ciertas palabras de una cadena en un nuevo formato. Por ejemplo, tengo que llamar a la función con la entrada:

text2function('$sin (x)$ is an function of x')

y necesito poner en un StringFunction:

StringFunction(function, independent_variables=[vari])

donde necesito para obtener ‘sin (x)’ para la función y ‘x’ para vari. Así que ésta sería finalmente:

StringFunction('sin (x)', independent_variables=['x']

problema es que me parece que no puede obtener la función y variable. He intentado:

start = string.index(start_marker) + len(start_marker)
end = string.index(end_marker, start)
return string[start:end]

y

r = re.compile('$()$')
m = r.search(string)
if m:
     lyrics = m.group(1)

y

send = re.findall('$([^"]*)$',string)

todo parece parece darme nada. Estoy haciendo algo mal? Toda la ayuda es apreciada. Gracias.

InformationsquelleAutor bellere | 2013-02-23

4 Comentarios

  1. 9

    Tweeky manera!

    >>> char1 = '('
    >>> char2 = ')'
    >>> mystr = "mystring(123234sample)"
    >>> print mystr[mystr.find(char1)+1 : mystr.find(char2)]
    123234sample
    • Realmente me gusta esta solución, a lo que yo estoy haciendo.
  2. 6

    $ es un personaje especial en regex (denota el final de la cadena). Usted necesita para escapar de él:

    >>> re.findall(r'$(.*?)$', '$sin (x)$ is an function of x')
    ['sin (x)']
  3. 3

    Usted necesita para empezar a buscar el segundo carácter más allá de start:

    end = string.index(end_marker, start + 1)

    porque de lo contrario se encontrará el mismo carácter, en el mismo lugar de nuevo:

    >>> start_marker = end_marker = '$'
    >>> string = '$sin (x)$ is an function of x'
    >>> start = string.index(start_marker) + len(start_marker)
    >>> end = string.index(end_marker, start + 1)
    >>> string[start:end]
    'sin (x)'

    Para las expresiones regulares, el $ personaje es interpretado como un ancla, no el carácter literal. Escapar de ella para que coincida con el literal $ (y buscar las cosas que son no $ en lugar de no ":

    send = re.findall('$([^$]*)$', string)

    que da:

    >>> import re
    >>> re.findall('$([^$]*)$', string)
    ['sin (x)']

    La expresión regular $()$ de lo contrario, realmente no coincide con nada entre los paréntesis, aunque lo hizo escapar de la $ caracteres.

  4. 1

    Si quieres cortar una cuerda entre dos caracteres idénticos (he.e, !234567890!)
    usted puede utilizar

       line_word = line.split('!')
       print (line_word[1])
    • Esto es lo que he estado buscando muchas gracias.

Dejar respuesta

Please enter your comment!
Please enter your name here