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

时间:2018-09-30 20:30:31

标签: python string python-3.x strip

我有一对琴弦。在这种情况下,让我们将它们视为分配给唯一变量的两个单独的字符串。这些字符串的长度相等:

var1 = 'AnAppleADayKeepsTheDoctorAway'
var2 = '000Ig00000noranceIsBliss00000'

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

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

我想从字符串var1中删除相同数量的字符,因为它们是“对”。在这种情况下,将删除前三个字符和后五个字符,即

'ppleADayKeepsTheDocto'

有没有一种方法可以让我高效地剥离var1中的字符,然后跟踪这些字符的数量以对第二个字符串var2进行相同的处理?我不确定strip()是执行此任务的最佳方法。

编辑:显然,有一个解决方案。

例如

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'

我正在寻找一种有效解决方案。如果有更快的Pythonic方法?

4 个答案:

答案 0 :(得分:2)

我相信没有这种方法。因此,对于您的问题,您将需要查找var 2的旧值和新值的长度之间的差异,如下所示:

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

答案 1 :(得分:2)

我将分两个步骤进行操作:首先,剥离前部,然后剥离后部。然后,您可以计算每侧剥离了多少个字符,并使用字符串切片。您可以为此使用scalaVersion := "2.12.6" scalacOptions := Seq( "-language:existentials", "-language:higherKinds", "-Ypartial-unification", // EDIT ) addCompilerPlugin("org.spire-math" %% "kind-projector" % "0.9.8") lstrip()。示例:

rstrip()

答案 2 :(得分:1)

您可以分别使用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中的字符数({{1}和var2之后的lstrip(..))。

因此,我们获得:

rstrip(..)

答案 3 :(得分:0)

您可以在剥离任一侧后使用长度变化来创建索引切片

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