remove python3 method python string strip

python3 - strip() method python



python: rstrip una cadena exacta, respetando el orden (4)

Definir una función de ayuda:

def strip_suffix(s, suf): if s.endswith(suf): return s[:len(s)-len(suf)] return s

o use expresiones regulares:

import re suffix = ".txt" s = re.sub(re.escape(suffix) + ''$'', '''', s)

¿Es posible usar el comando rstrip python para que solo elimine una cadena exacta y no tome todas las letras por separado?

Estaba confundido cuando esto sucedió:

>>>"Boat.txt".rstrip(".txt") >>>''Boa''

Lo que esperaba era:

>>>"Boat.txt".rstrip(".txt") >>>''Boat''

¿Puedo de alguna manera usar rstrip y respetar el orden, para obtener el segundo resultado?


Estás usando el método equivocado. Utilice str.replace en str.replace lugar:

>>> "Boat.txt".replace(".txt", "") ''Boat''

NOTA : str.replace reemplazará en cualquier lugar de la cadena.

>>> "Boat.txt.txt".replace(".txt", "") ''Boat''

Para eliminar solo el último .txt final, puede usar expresiones regulares :

>>> import re >>> re.sub(r"/.txt$", "", "Boat.txt.txt") ''Boat.txt''

Si desea un nombre de archivo sin extensión, os.path.splitext es más apropiado:

>>> os.path.splitext("Boat.txt") (''Boat'', ''.txt'')


Esto funcionará independientemente del tipo de extensión.

# Find the rightmost period character filename = "my file 1234.txt" file_extension_position = filename.rindex(".") # Substring the filename from first char up until the final period position stripped_filename = filename[0:file_extension_position] print("Stripped Filename: {}".format(stripped_filename))


>>> myfile = "file.txt" >>> t = "" >>> for i in myfile: ... if i != ".": ... t+=i ... else: ... break ... >>> t ''file'' >>> # Or You can do this >>> import collections >>> d = collections.deque("file.txt") >>> while True: ... try: ... if "." in t: ... break ... t+=d.popleft() ... except IndexError: ... break ... finally: ... filename = t[:-1] ... >>> filename ''file'' >>>