python字符串剥离字符



如何从字符串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.removeprefixfrompython3.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)

最新更新