답변:
분리기를 최대 한 번 분할하고 첫 번째 조각을 가져옵니다.
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)