如何删除所有在python中的特定字符后的字符?
我有一个string。 如何删除特定字符后的所有文本? ( 在这种情况下...
)
后面的文字将会改变,所以我这就是为什么我想删除所有字符后,一个特定的。
最多分开一次,拿第一块:
sep = '...' rest = text.split(sep, 1)[0]
你没有说如果分离器不存在会发生什么。 在这种情况下,这个和Alex的解决scheme将返回整个string。
假设你的分隔符是'…',但它可以是任何string。
text = 'some string... this part will be removed.' head, sep, tail = text.partition('...') >>> print head some string
如果没有find分隔符, head
将包含所有原始string。
分区函数是在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.
没有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)
如果你想在string中最后一个分隔符出现后删除所有的东西,我觉得这个效果很好:
<separator>.join(string_to_split.split(<separator>)[:-1])
例如,如果string_to_split
是一个像root/location/child/too_far.exe
的path,而你只想要文件夹path,那么可以用"/".join(string_to_split.split("/")[:-1])
来分割。你会得到root/location/child
使用re的另一个简单的方法是
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