代码之家  ›  专栏  ›  技术社区  ›  ShanZhengYang

跟踪字符串中删除的字符数,python`strip()`

  •  -1
  • ShanZhengYang  · 技术社区  · 6 年前

    我有一对弦。在本例中,让我们将它们视为分配给唯一变量的两个独立字符串。这些字符串长度相等:

    var1 = 'AnAppleADayKeepsTheDoctorAway'
    var2 = '000Ig00000noranceIsBliss00000'
    

    我所知道的在Python中从字符串中去除开头和结尾字符的最有效的方法是方法 strip() :

    print(var2.strip('0'))
    'Ig00000noranceIsBliss'
    

    我想从字符串中删除相同数量的字符 var1 ,因为它们是一对。在本例中,将删除前三个字符和后五个字符,即。

    'ppleADayKeepsTheDocto'
    

    变量1 然后跟踪这些字符的数量,以便对第二个字符串执行相同的操作, var2 ? 我不确定 是完成这项任务的最佳方法。

    例如

    length_original = len(var2)
    num_left_chars = len(var2) - len(var2.lstrip('0'))
    num_right_chars = len(var2.rstrip('0'))
    edited = var1[num_left_chars:num_right_chars]
    print(edited)
    ## printed
    ## 'ppleADayKeepsTheDocto'
    

    我在找一个 解决方案。有没有更快的化脓法?

    4 回复  |  直到 6 年前
        1
  •  3
  •   Green Cloak Guy    6 年前

    我会分两步来做:首先,去掉前面的,然后去掉后面的。然后您可以计算每侧剥离了多少个字符,并使用字符串切片。你可以用 lstrip() rstrip()

    var1 = 'AnAppleADayKeepsTheDoctorAway'
    var2 = '000Ig00000noranceIsBliss00000'
    
    num_leading = len(var2) - len(var2.lstrip('0'))
    num_trailing = len(var2) - len(var2.rstrip('0'))
    
    print(var2.strip())
    print(var1[num_leading:-1*num_trailing])
    
        2
  •  3
  •   user10433052 user10433052    6 年前

    var1 = 'AnAppleADayKeepsTheDoctorAway'
    var2 = '000Ig00000noranceIsBliss00000'
    old_length = len(var2)
    var2 = var2.strip('0')
    diff_length = old_length - len(var2)
    var1 = var1[diff_length:len(var1)-diff_length]
    

    enter image description here

        3
  •  1
  •   willeM_ Van Onsem    6 年前

    你可以用 lstrip(..) rstrip(..) 分别计算每次删除的字符数,并用这些字符进行切片:

    var1 = 'AnAppleADayKeepsTheDoctorAway'
    var2 = '000Ig00000noranceIsBliss00000'
    
    n0 = len(var2)
    var3 = var2.lstrip('0')
    nl = n0 - len(var3)
    
    var2s = var3.rstrip('0')
    
    var1s = var1[nl:len(var2s)+nl]
    

    var1s nl lstrip(…) var2s ( var2 两者之后 lstrip(…) rstrip(…) ).

    因此,我们得出:

    >>> var1s
    'ppleADayKeepsTheDocto'
    >>> var2s
    'Ig00000noranceIsBliss' 
    
        4
  •  0
  •   vash_the_stampede    6 年前

    可以使用剥离任一侧后长度的更改来创建索引切片

    left = var2.lstrip('0')
    start = len(var2) - len(left)
    
    right = var2.rstrip('0')
    end = (len(var2) - len(right))
    
    var1 = var1[start: len(var1) - end]
    var2 = var2.strip('0')
    
    ppleADayKeepsTheDocto 
    Ig00000noranceIsBliss