python string startswith

title python matplotlib



¿Cuál es la forma más fácil de obtener todas las cadenas que no comienzan con un personaje? (4)

Estoy tratando de analizar unos 20 millones de líneas de un archivo de texto y estoy buscando una manera de hacer más manipulaciones en las líneas que no comienzan con signos de interrogación. Me gustaría una solución que no use la coincidencia de expresiones regulares. Lo que me gustaría hacer es algo como esto:

for line in x: header = line.startswith(''?'') if line.startswith() != header: DO SOME STUFF HERE

Me doy cuenta de que el método startswith toma un argumento, pero ¿hay alguna solución simple para obtener todas las líneas de una línea que NO empiecen con un signo de interrogación? Gracias de antemano por la ayuda.


Algo como esto es probablemente lo que buscas:

with open(''myfile.txt'') as fh: for line in fh: if line[0] != ''?'': # strings can be accessed like lists - they''re immutable sequences. continue # All of the processing here when lines don''t start with question marks.


Aquí hay un buen comentario de una sola línea, que es muy cercano al lenguaje natural.

Definición de la cadena:

StringList = [ ''__one'', ''__two'', ''three'', ''four'' ]

Código que realiza la escritura:

BetterStringList = [ p for p in StringList if not(p.startswith(''__''))]



Usa expresiones generadoras, de la mejor manera que pienso.

for line in (line for line in x if not line.startswith(''?'')): DO_STUFF

O a tu manera:

for line in x: if line.startswith("?"): continue DO_STUFF

O:

for line in x: if not line.startswith("?"): DO_STUFF

Es realmente depende de su estilo de programación. Prefiero el primero, pero tal vez el segundo parezca más simple. Pero realmente no me gusta el tercero debido a una gran cantidad de sangrado.