Pertanyaan Bagaimana cara menghapus semua karakter setelah karakter tertentu dalam python?


Saya punya sebuah string. Bagaimana cara menghapus semua teks setelah karakter tertentu? (Pada kasus ini ...)
Teks setelahnya ... berubah jadi saya itu sebabnya saya ingin menghapus semua karakter setelah yang tertentu.


75
2018-05-24 21:56


asal


Jawaban:


Split pada pemisah Anda paling banyak sekali, dan ambil bagian pertama:

sep = '...'
rest = text.split(sep, 1)[0]

Anda tidak mengatakan apa yang seharusnya terjadi jika pemisah tidak ada. Kedua solusi ini dan Alex akan mengembalikan seluruh string dalam kasus itu.


137
2018-05-24 22:01



Dengan asumsi pemisah Anda adalah '...', tetapi dapat berupa string apa pun.

text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')

>>> print head
some string

Jika pemisah tidak ditemukan, head akan berisi semua string asli.

Fungsi partisi ditambahkan dengan Python 2.5.

partisi (...)       S.partition (sep) -> (kepala, sep, ekor)

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.

59
2018-05-24 22:02



Tanpa RE (yang saya berasumsi adalah apa yang Anda inginkan):

def remafterellipsis(text):
  where_ellipsis = text.find('...')
  if where_ellipsis == -1:
    return text
  return text[:where_ellipsis + 3]

atau, dengan RE:

import re

def remwithre(text, there=re.compile(re.escape('...')+'.*')):
  return there.sub('', text)

7
2018-05-24 22:00



Jika Anda ingin menghapus semuanya setelah pemisah terakhir dalam string saya menemukan ini bekerja dengan baik:

<separator>.join(string_to_split.split(<separator>)[:-1])

Misalnya, jika string_to_split adalah jalan seperti root/location/child/too_far.exe dan Anda hanya ingin jalur folder, Anda dapat membaginya "/".join(string_to_split.split("/")[:-1]) dan kamu akan mendapatkannya root/location/child


7
2017-09-14 22:18



cara lain yang mudah menggunakan re akan

import re, clr

text = 'some string... this part will be removed.'

text= re.search(r'(\A.*)\.\.\..+',url,re.DOTALL|re.IGNORECASE).group(1)

// text = some string

0
2018-05-20 10:42