I have a string. How do I remove all text after a certain character? (In this case ...)
The text after will ... change so I that’s why I want to remove all characters after a certain one.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Split on your separator at most once, and take the first piece:
sep = '...' stripped = text.split(sep, 1)[0]
You didn’t say what should happen if the separator isn’t present. Both this and Alex’s solution will return the entire string in that case.
Method 2
Assuming your separator is ‘…’, but it can be any string.
text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')
>>> print head
some string
If the separator is not found, head will contain all of the original string.
The partition function was added in Python 2.5.
S.partition(sep)->(head, 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.
Method 3
If you want to remove everything after the last occurrence of separator in a string I find this works well:
<separator>.join(string_to_split.split(<separator>)[:-1])
For example, if string_to_split is a path like root/location/child/too_far.exe and you only want the folder path, you can split by "/".join(string_to_split.split("/")[:-1]) and you’ll get
root/location/child
Method 4
Without a regular expression (which I assume is what you want):
def remafterellipsis(text):
where_ellipsis = text.find('...')
if where_ellipsis == -1:
return text
return text[:where_ellipsis + 3]
or, with a regular expression:
import re
def remwithre(text, there=re.compile(re.escape('...')+'.*')):
return there.sub('', text)
Method 5
import re
test = "This is a test...we should not be able to see this"
res = re.sub(r'....*',"",test)
print(res)
Output: “This is a test”
Method 6
From a file:
import re
sep = '...'
with open("requirements.txt") as file_in:
lines = []
for line in file_in:
res = line.split(sep, 1)[0]
print(res)
Method 7
The method find will return the character position in a string. Then, if you want remove every thing from the character, do this:
mystring = "123⋯567"
mystring[ 0 : mystring.index("⋯")]
>> '123'
If you want to keep the character, add 1 to the character position.
Method 8
This is in python 3.7 working to me
In my case I need to remove after dot in my string variable fees
fees = 45.05
split_string = fees.split(“.”, 1)
substring = split_string[0]
print(substring)
Method 9
Yet another way to remove all characters after the last occurrence of a character in a string (assume that you want to remove all characters after the final ‘/’).
path = 'I/only/want/the/containing/directory/not/the/file.txt'
while path[-1] != '/':
path = path[:-1]
Method 10
another easy way using re will be
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
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0