在Python3中摆脱常见子串前缀的最佳方法是什么?

0 python string substring python-3.x

假设我们有字符串和字符串列表:

串:

  • str1 = <common-part>

字符串列表:

[<common-part>-<random-text-a>, <common-part>-<random-text-b>]
Run Code Online (Sandbox Code Playgroud)

获得这样一个列表的最佳(在可读性和代码纯度的情况下)是什么:

[<random-text-a>, <random-text-b>]
Run Code Online (Sandbox Code Playgroud)

Jea*_*bre 5

我会计算所有字符串的公共前缀os.path.commonprefix,然后切割字符串以删除该前缀(此函数在os.path模块中,但不检查路径分隔符,它可用于通用上下文):

import os

p = ["<common-part>-<some-text-a>", "<common-part>-<random-text-b>"]
commonprefix = os.path.commonprefix(p)

new_p = [x[len(commonprefix):] for x in p]

print(new_p)
Run Code Online (Sandbox Code Playgroud)

结果(因为commonprefix是""<common-part>-<"):

['some-text-a>', 'random-text-b>']
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 此方法允许提前使用的完整动态前缀.通过反转琴弦,还可以删除通用后缀.
  • 最好使用len切片结果而不是str.replace():它更快,它只删除字符串的开头,并且安全,因为我们知道所有字符串都以此前缀开头.

  • `len()`比`str.replace`快 (2认同)