Bastante nuevo en Python aquí. Estoy ejecutando el controlador web de selenio para consultar información de un sitio web (solo accesible desde mi organización, sí, las consultas SQL serían mucho mejores, pero esto es lo que tengo trabajando en este momento). Estoy usando el método .text de Selenium para recuperar texto de una tabla y yo print(XXX.text), esto devuelve algo como esto.

XXX.pdf
[Remove]
XXX.pdf
[Remove]
etc...

La pregunta es que me gustaría eliminar el [Remove] para que me quede algo como:

XXX.pdf
XXX.pdf

O mejor

XXX.pdf, XXX.pdf

Esto es lo que he intentado hasta ahora que no ha funcionado.

dataElement = driver.find_element_by_css_selector('''blah blah blah''')                                             
datasheets = str(dataElement.text)
datasheets.replace('[Remove]','')
print(datasheets)

Python 3.5 Selenium 2

Gracias por cualquier ayuda. :)

1
John Kulick 9 sep. 2018 a las 00:54

4 respuestas

La mejor respuesta
In [26]: data = '''\
    ...: XXX.pdf
    ...: [Remove]
    ...: XXX.pdf
    ...: [Remove]\
    ...: '''

In [27]: def func(string, rep):
    ...:     return ', '.join([x for x in string.split('\n') if x != rep])
    ...: 

In [28]: func(data, '[Remove]')
Out[28]: 'XXX.pdf, XXX.pdf'

Puedes usar algo como esto.

2
nwxnk 27 nov. 2019 a las 19:36

¿Qué imprimió en el resultado? Quizás te olvides de algo.

dataElement = driver.find_element_by_css_selector('''blah blah blah''')
datasheets = str(dataElement.text) datasheets = datasheets.replace('[Remove]','') print(datasheets)

2
Денис Иванов 8 sep. 2018 a las 22:35

Debe hacer algo como esto para analizar su salida.

dataElement = driver.find_element_by_css_selector("blah blah blah")
#I don't know what type is this one, but I asume it's a iterable. 

removes = Set(["[remove]","[remove1]", "[remove2]"])
#You can have a set of the strings you want to remove
for data in dataElement:
#for every unit in this iterable variable we'll do the next lines
    if str(data) in removes == False:
    #if something it is not actually in the set of unwanted stuff.                          
        print(str(data))
        #this is your useful output
        #whatever you wanna do to the filtered output.
    else:
        #this is the stuff you don't want to use, the [remove] ones

Espero que esto te de una pista. Saludos.

0
kny5 8 sep. 2018 a las 22:59

Prueba esto:

l = s.split('[Remove]')
s = ', '.join(l)
0
m9mhmdy 8 sep. 2018 a las 22:40