Mam sznurek. Jak usunąć cały tekst po określonym znaku? ( W tym przypadku...
)
Tekst po ...
zmianie się zmieni, dlatego chcę usunąć wszystkie znaki po pewnym.
Mam sznurek. Jak usunąć cały tekst po określonym znaku? ( W tym przypadku...
)
Tekst po ...
zmianie się zmieni, dlatego chcę usunąć wszystkie znaki po pewnym.
Odpowiedzi:
Najpóźniej od razu podziel separator i weź pierwszy element:
sep = '...'
rest = text.split(sep, 1)[0]
Nie powiedziałeś, co się stanie, jeśli nie ma separatora. Zarówno to, jak i rozwiązanie Alexa zwróci w tym przypadku cały ciąg.
Zakładając, że separatorem jest „...”, ale może to być dowolny ciąg.
text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')
>>> print head
some string
Jeśli separator nie zostanie znaleziony, head
będzie zawierał cały oryginalny ciąg.
Funkcja partycji została dodana w Pythonie 2.5.
przegroda (...) S. partycja (sep) -> (głowa, wrz, ogon)
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.
Jeśli chcesz usunąć wszystko po ostatnim wystąpieniu separatora w ciągu, uważam, że działa to dobrze:
<separator>.join(string_to_split.split(<separator>)[:-1])
Na przykład, jeśli string_to_split
jest to ścieżka podobna do ścieżki root/location/child/too_far.exe
i chcesz tylko ścieżkę do folderu, możesz ją podzielić, "/".join(string_to_split.split("/")[:-1])
a otrzymasz
root/location/child
Bez RE (co, jak zakładam, jest tym, czego chcesz):
def remafterellipsis(text):
where_ellipsis = text.find('...')
if where_ellipsis == -1:
return text
return text[:where_ellipsis + 3]
lub w przypadku RE:
import re
def remwithre(text, there=re.compile(re.escape('...')+'.*')):
return there.sub('', text)
Metoda find zwróci pozycję znaku w ciągu. Następnie, jeśli chcesz usunąć wszystko z postaci, zrób to:
mystring = "123⋯567"
mystring[ 0 : mystring.index("⋯")]
>> '123'
Jeśli chcesz zachować znak, dodaj 1 do pozycji znaku.
import re
test = "This is a test...we should not be able to see this"
res = re.sub(r'\.\.\..*',"",test)
print(res)
Wynik: „To jest test”
Z pliku:
import re
sep = '...'
with open("requirements.txt") as file_in:
lines = []
for line in file_in:
res = line.split(sep, 1)[0]
print(res)