从 python 中的字符串中删除一组前缀字符



我正在尝试从字符串"@@@@b@@"中删除所有前缀"@"预期输出为"b@@"(不是所有的"@",而只是前缀(如果没有前缀"@",它应该返回原始字符串本身这是代码,我正在尝试:(我正在使用python 2.X(

mylist = []


def remove(S):
    mylist.append(S)
    j=0
    for i in range(len(S)):
        if mylist[0][j]=='@':
            S = S[:j] + S[j + 1:]
            j+=1
            return S

        else:
            return S
            break


a = remove("@@@@b@@")
print a

使用lstrip()

返回删除了前导字符的字符串副本。chars 参数是一个字符串,指定要删除的字符集。

>>> "@@@@b@@".lstrip("@")
'b@@'

Python 3.9
有两个新的字符串方法,removesuffix(( 和 removeprefix((

"HelloWorld".removesuffix("World")

输出:"你好">

"HelloWorld".removeprefix("Hello")

输出:"世界">

在 Python 3.9 之前

  1. 使用 lstrip(( (见基督徒回答(
    小心使用 lstrip 和 rstrip。如果您只是尝试删除前几个字母。lstrip(( 和 rstrip(( 会不断删除字母,直到它到达无法识别的字母。

      a = "@@@b@@"  
      print(a.lstrip('@@@b'))
    

输出:上面的输出是一个空字符串,lstrip 剥离了所有内容!

a = "@@@b@@c"
print(a.lstrip('@@@b'))

输出:c

  1. 使用正则表达式
  import re
  url = 'abcdc.com'
  url = re.sub('.com$', '', url)
def remove(S): return S[4:] if S.startswith('@@@@') else S
>>> remove('@@@@b@@')
'b@@'
>>> remove('@@@b@@')
'@@@b@@'

最新更新