[python] 파이썬에서 특정 문자 다음에 모든 문자를 제거하는 방법은 무엇입니까?

문자열이 있습니다. 특정 문자 다음에 모든 텍스트를 제거하려면 어떻게합니까? ( 이 경우... )
이후의 텍스트가 ...변경되므로 특정 문자 다음의 모든 문자를 제거하고 싶습니다.



답변

분리기를 최대 한 번 분할하고 첫 번째 조각을 가져옵니다.

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

분리기가 없으면 어떻게해야하는지 말하지 않았습니다. 이 경우와 Alex의 솔루션은 모두이 경우 전체 문자열을 반환합니다.


답변

구분 기호가 ‘…’이라고 가정하지만 모든 문자열이 될 수 있습니다.

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

>>> print head
some string

구분 기호를 찾을 수 없으면 head원래 문자열이 모두 포함됩니다.

파티션 함수는 파이썬 2.5에서 추가되었습니다.

파티션 (…) S. 파티션 (sep)-> (헤드, sep, tail)

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)


답변

find 메소드는 문자열에서 문자 위치를 리턴합니다. 그런 다음 캐릭터에서 모든 것을 제거하려면 다음을 수행하십시오.

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)