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''
>>>