如何删除python中特定字符后的所有字符?

时间:2009-05-24 21:56:50

标签: python replace python-2.6

我有一个字符串。如何删除某个字符后的所有文字? (在这种情况下...
... 之后的文字会发生变化,因此我想删除所有字符后删除所有字符。

10 个答案:

答案 0 :(得分:193)

最多在分隔符上拆分一次,然后取出第一块:

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

您没有说明如果没有分隔符会发生什么。在这种情况下,这个和Alex的解决方案都将返回整个字符串。

答案 1 :(得分:73)

假设您的分隔符为“...”,但它可以是任何字符串。

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

>>> print head
some string

如果找不到分隔符,head将包含所有原始字符串。

在Python 2.5中添加了分区功能。

  

分区(...)       S.partition(sep) - > (头,sep,尾巴)

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.

答案 2 :(得分:11)

如果你想在字符串中最后一次出现分隔符后删除所有内容,我发现这很有效:

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

例如,如果string_to_splitroot/location/child/too_far.exe之类的路径而您只想要文件夹路径,则可以按"/".join(string_to_split.split("/")[:-1])拆分,然后您就可以获得 root/location/child

答案 3 :(得分:9)

没有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)

答案 4 :(得分:2)

import re
test = "This is a test...we should not be able to see this"
res = re.sub(r'\.\.\..*',"",test)
print(res)

输出:“这是一个测试”

答案 5 :(得分:2)

来自文件:

import re
sep = '...'

with open("requirements.txt") as file_in:
    lines = []
    for line in file_in:
        res = line.split(sep, 1)[0]
        print(res)

答案 6 :(得分:2)

find方法将返回字符串中的字符位置。然后,如果要从角色中删除所有内容,请执行以下操作:

mystring = "123⋯567"
mystring[ 0 : mystring.index("⋯")]

>> '123'

如果要保留字符,请在字符位置加1。

答案 7 :(得分:0)

使用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

答案 8 :(得分:0)

<块引用>

这是在对我工作的python 3.7中 在我的情况下,我需要删除我的字符串变量费用中的点

费用 = 45.05
split_string = fee.split(".", 1)

substring = split_string[0]

打印(子字符串)

答案 9 :(得分:0)

另一种删除字符串中最后个字符后所有字符的方法(假设您要删除最后一个“/”后的所有字符)。

path = 'I/only/want/the/containing/directory/not/the/file.txt'

while path[-1] != '/':
    path = path[:-1]