Eu tenho uma corda. Como removo todo o texto após um determinado caractere? ( Nesse caso...
)
O texto a seguir será ...
alterado, então é por isso que desejo remover todos os caracteres após um determinado.
Eu tenho uma corda. Como removo todo o texto após um determinado caractere? ( Nesse caso...
)
O texto a seguir será ...
alterado, então é por isso que desejo remover todos os caracteres após um determinado.
Respostas:
Divida o separador no máximo uma vez e pegue a primeira peça:
sep = '...'
rest = text.split(sep, 1)[0]
Você não disse o que deveria acontecer se o separador não estiver presente. Tanto a solução quanto a de Alex retornarão a string inteira nesse caso.
Supondo que seu separador seja '...', mas pode ser qualquer string.
text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')
>>> print head
some string
Se o separador não for encontrado, head
ele conterá toda a sequência original.
A função de partição foi adicionada no Python 2.5.
partição (...) S.partition (sep) -> (cabeça, sep, cauda)
Searches for the separator sep in S, and returns the part before it, the separator itself, and the part after it. If the separator is not found, returns S and two empty strings.
Se você deseja remover tudo após a última ocorrência do separador em uma string, acho que isso funciona bem:
<separator>.join(string_to_split.split(<separator>)[:-1])
Por exemplo, se string_to_split
for um caminho root/location/child/too_far.exe
e você desejar apenas o caminho da pasta, você poderá dividir por "/".join(string_to_split.split("/")[:-1])
e obterá
root/location/child
Sem um ER (que eu assumo é o que você deseja):
def remafterellipsis(text):
where_ellipsis = text.find('...')
if where_ellipsis == -1:
return text
return text[:where_ellipsis + 3]
ou, com um ER:
import re
def remwithre(text, there=re.compile(re.escape('...')+'.*')):
return there.sub('', text)
O método find retornará a posição do caractere em uma string. Então, se você deseja remover tudo do personagem, faça o seguinte:
mystring = "123⋯567"
mystring[ 0 : mystring.index("⋯")]
>> '123'
Se você deseja manter o personagem, adicione 1 à posição do personagem.
import re
test = "This is a test...we should not be able to see this"
res = re.sub(r'\.\.\..*',"",test)
print(res)
Saída: "Este é um teste"
De um arquivo:
import re
sep = '...'
with open("requirements.txt") as file_in:
lines = []
for line in file_in:
res = line.split(sep, 1)[0]
print(res)