首页 > 解决方案 > 如何从字符串列表中删除子字符串?

问题描述

我有一个字符串列表,所有这些都有一个共同的属性,它们都是这样的"pp:actual_string"。我不确定子字符串"pp:"会是什么,基本上:充当分隔符;之前的所有内容:都不应该包含在结果中。

我已经使用蛮力方法解决了这个问题,但我想看看一个聪明的方法,也许像正则表达式。

注意:有些字符串可能没有这种"pp:string"格式,并且可能已经是一个完美的字符串,即没有分隔符。

这是我目前的解决方案:

ll = ["pp17:gaurav","pp17:sauarv","pp17:there","pp17:someone"]
res=[]
for i in ll:
    g=""
    for j in range(len(i)):
        if i[j] == ':':
            index=j+1
    res.append(i[index:len(i)])

print(res)

有没有一种方法可以在不创建额外列表的情况下做到这一点?

标签: pythonpython-3.xlist

解决方案


这里有几个选项,基于不同的假设。

最明确的

if s.startswith('pp:'):
    s = s[len('pp:'):]  # aka 3

如果您想在第一个之前删除任何内容:

s = s.split(':', 1)[-1]

常用表达:

与开始相同

s = re.sub('^pp:', '', s)

与 split 相同,但更小心 'pp:' 并且速度较慢

s = re.match('(?:^pp:)?(.*)', s).group(1)

推荐阅读