我有一个字符串列表,所有这些字符串都有一个公共属性,它们都是这样的"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)
有没有一种方法可以在不创建额外列表的情况下完成
虽然regex是一个功能强大得难以置信的工具,但使用“聪明的方法”并不一定是您不熟悉其原理的最佳方法
您的问题可以在不使用正则表达式的情况下解决,方法是使用^{} 方法对
:
字符进行拆分,然后使用[-1]
索引值返回最后一部分,以表示拆分后的最后(或唯一)字符串。即使没有:
,这也会起作用这是一个列表理解,它依次接受每个字符串(
x
),拆分:
字符上的字符串,返回一个包含前缀(如果存在)和后缀的列表,并构建一个新列表,其中只包含后缀(即拆分后的列表中的项[-1])。在本例中,它返回:以下是一些基于不同假设的选项
最明确的
如果要删除第一个
:
之前的任何内容正则表达式:
与startswith
与split相同,但对'pp:'更为小心,速度较慢
相关问题 更多 >
编程相关推荐