python - 如何从字符串列表中删除子字符串?
问题描述
我有一个字符串列表,所有这些都有一个共同的属性,它们都是这样的"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)
有没有一种方法可以在不创建额外列表的情况下做到这一点?
解决方案
这里有几个选项,基于不同的假设。
最明确的
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)
推荐阅读
- alert - 如何确保基于堆栈驱动程序日志的指标获得 0 值而不是没有数据?
- c++ - 如何在模板中获取指针类型的取消引用类型?
- android - 将活动传递给 LifecycleObserver
- php - 根据匹配的列名合并两个数组
- java - 启动今天早上很好的应用程序时出现错误(java.lang.IllegalArgumentException:不是直接缓冲区)
- laravel - 使用 Laravel 7 从 Github 集成 Iseed 后查看 Voyager 表时出现问题
- javascript - JS改变tbody的宽度?
- c# - 无法在 JetBrains Rider 中构建或运行我的 .NET 应用程序
- html - 如何让我的图片显示在屏幕的一半上?
- javascript - 在 href 之后预选选项值