如何从字符串devices/slipstream_internal/slipstream_hq/23
中只去掉字符devices/
?
如果我尝试:
device = 'devices/slipstream_internal/slipstream_hq/23'
device = device.strip('devices/')
print(device)
为什么这个打印为去掉我想要的slipstream_internal
中的s
?这个打印:
'lipstream_internal/slipstream_hq/23'
我正在使用Python 3.8
问题
str.strip
方法从一开始就删除包含在给定参数中的任何字符,无论其顺序如何,直到一个字符不在给定值中,因此这些调用是相同的
device.strip('devices/')
device.strip('/devices')
device.strip('/cdsiev')
它包含一个s
,所以s
被删除
解决方案
使用
re.sub
和'^devices/'
(^
in模式确保它只从开始删除)import re device = 'devices/slipstream_internal/slipstream_hq/23' device = re.sub('^devices/', '', device)
str.replace
计数为1,但可以删除非开始值device = device.replace('devices/', '', 1)
或
str.removeprefix
frompython3.9
device = device.removeprefix('devices/')
strip('devices/')
将从字符串的开头和结尾删除作为参数传递的任何字符。将实参视为要删除的一组字符,而不是要删除的子字符串或序列。
如果您只想从字符串的开头删除'devices/'
,请尝试使用
device.replace('devices/', '')
或者更好的
device.replace('devices/', '', 1)
,以确保只删除第一个出现。
您可能需要使用字符串替换函数
device = 'devices/slipstream_internal/slipstream_hq/23'
device = device.replace('devices/', '')
print(device)