python字符串剥离字符

时间:2021-07-28 20:04:09

标签: python string

如何仅从字符串 devices/ 中去除字符 devices/slipstream_internal/slipstream_hq/23

如果我尝试:

device = 'devices/slipstream_internal/slipstream_hq/23'
device = device.strip('devices/')

print(device)

为什么这会打印出我想要的 s 中的 slipstream_internal?这打印:

'lipstream_internal/slipstream_hq/23'

我使用的是 Python 3.8

3 个答案:

答案 0 :(得分:4)

问题

str.strip 方法从一开始就删除给定参数中包含的任何字符,无论顺序如何,直到一个不在给定值中,因此这些调用是相同的

device.strip('devices/')
device.strip('/devices')
device.strip('/cdsiev')

它包含一个 s,所以 s 被删除


解决方案

  • re.sub'^devices/' 一起使用(模式中的 ^ 确保它仅删除开头)

    import re
    device = 'devices/slipstream_internal/slipstream_hq/23'
    device = re.sub('^devices/', '', device)
    
  • str.replace 计数为 1,但可以删除非起始值

    device = device.replace('devices/', '', 1)
    
  • 或来自str.removeprefix的{​​{1}}

    python3.9

答案 1 :(得分:1)

strip('devices/') 将从字符串的开头和结尾删除您作为参数传递的任何字符。将参数视为要删除的一组字符,而不是要删除的子字符串或序列。

如果您只想从字符串的开头删除 'devices/',请尝试使用

device.replace('devices/', '')

甚至更好

device.replace('devices/', '', 1)

确保只删除第一次出现。

答案 2 :(得分:0)

您可能想要使用字符串替换功能。

device = 'devices/slipstream_internal/slipstream_hq/23'
device = device.replace('devices/', '')

print(device)

相关问题