У мене струна. Як видалити весь текст після певного символу? ( У цьому випадку...
)
Текст після ...
зміниться, тому я саме тому я хочу видалити всі символи після певного.
У мене струна. Як видалити весь текст після певного символу? ( У цьому випадку...
)
Текст після ...
зміниться, тому я саме тому я хочу видалити всі символи після певного.
Відповіді:
Розділіть на своєму сепараторі не пізніше і візьміть перший шматок:
sep = '...'
rest = text.split(sep, 1)[0]
Ви не сказали, що має статися, якщо роздільника немає. І це, і рішення Алекса повернуть всю нитку в цьому випадку.
Припустимо, що ваш роздільник є "...", але це може бути будь-який рядок.
text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')
>>> print head
some string
Якщо роздільник не знайдеться, head
буде містити всю початкову рядок.
У Python 2.5 була додана функція розділу.
розділ (...) S.partition (sep) -> (голова, sep, хвіст)
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.
Якщо ви хочете видалити все після останнього появи роздільника в рядку, я вважаю, що це працює добре:
<separator>.join(string_to_split.split(<separator>)[:-1])
Наприклад, якщо string_to_split
такий шлях подобається, root/location/child/too_far.exe
і ви хочете лише шлях до папки, ви можете розділити їх "/".join(string_to_split.split("/")[:-1])
і ви отримаєте
root/location/child
Без RE (який я припускаю, що ви хочете):
def remafterellipsis(text):
where_ellipsis = text.find('...')
if where_ellipsis == -1:
return text
return text[:where_ellipsis + 3]
або, з RE:
import re
def remwithre(text, there=re.compile(re.escape('...')+'.*')):
return there.sub('', text)
Пошук методу поверне позицію символу в рядку. Потім, якщо ви хочете видалити кожну річ із персонажа, зробіть це:
mystring = "123⋯567"
mystring[ 0 : mystring.index("⋯")]
>> '123'
Якщо ви бажаєте зберегти символ, додайте 1 до позиції символу.
import re
test = "This is a test...we should not be able to see this"
res = re.sub(r'\.\.\..*',"",test)
print(res)
Вихід: "Це тест"
З файлу:
import re
sep = '...'
with open("requirements.txt") as file_in:
lines = []
for line in file_in:
res = line.split(sep, 1)[0]
print(res)