跟踪字符串中删除的字符数,python `strip()`
Keeping track of number of characters removed in strings, python `strip()`
我有一对琴弦。在这种情况下,让我们将它们视为分配给唯一变量的两个单独的字符串。这些字符串长度相等:
var1 = 'AnAppleADayKeepsTheDoctorAway'
var2 = '000Ig00000noranceIsBliss00000'
据我所知,从 Python 中的字符串中去除开头和结尾字符的最有效方法是方法 strip()
:
print(var2.strip('0'))
'Ig00000noranceIsBliss'
我想从字符串 var1
中删除相同数量的字符,因为它们是 "pair"。在这种情况下,这将删除前三个字符和尾随的五个字符,即
'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方法?
我相信没有这样的方法。因此,对于您的问题,您可能希望找到 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]
我会分两步进行:首先,剥正面,然后剥背面。然后你可以计算每边有多少字符被剥离,并使用字符串切片。您可以为此使用 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])
可以分开使用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'
您可以使用剥离任一侧后的长度变化来创建索引切片
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
我有一对琴弦。在这种情况下,让我们将它们视为分配给唯一变量的两个单独的字符串。这些字符串长度相等:
var1 = 'AnAppleADayKeepsTheDoctorAway'
var2 = '000Ig00000noranceIsBliss00000'
据我所知,从 Python 中的字符串中去除开头和结尾字符的最有效方法是方法 strip()
:
print(var2.strip('0'))
'Ig00000noranceIsBliss'
我想从字符串 var1
中删除相同数量的字符,因为它们是 "pair"。在这种情况下,这将删除前三个字符和尾随的五个字符,即
'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方法?
我相信没有这样的方法。因此,对于您的问题,您可能希望找到 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]
我会分两步进行:首先,剥正面,然后剥背面。然后你可以计算每边有多少字符被剥离,并使用字符串切片。您可以为此使用 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])
可以分开使用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'
您可以使用剥离任一侧后的长度变化来创建索引切片
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