我有一个嵌套列表,在每个列表中,第一个项目是以.abc
结尾的字符串。我想从嵌套列表中删除所有.abc
个字符。
这是我的所得:
x = [['car.abc', 1, 2], ['ship.abc', 3, 4]]
我希望我的嵌套列表如下:
x = [['car', 1, 2], ['ship', 3, 4]]
我怎样才能做到这一点?
答案 0 :(得分:1)
使用简单的for循环。
x = [['car.abc', 1, 2], ['ship.abc', 3, 4]]
for i in x:
i[0] = i[0].rsplit(".", 1)[0]
print(x)
答案 1 :(得分:1)
使用嵌套的正则表达式和列表推导:
>>> import re
>>> [[re.sub(r'.abc$', '', e) if isinstance(e, basestring) else e for e in l] for l in x]
[['car', 1, 2], ['ship', 3, 4]]
isinstance(e, basestring)
检查e
是否为字符串(请参阅similar question for cv-qualifiers)。
对于字符串e
,re.sub(r'.abc$', '', e)
会替换您指定的部分
否则e
不受影响
对于e
中的每个l
,列表l
中的任何元素x
都会发生上述情况。
答案 2 :(得分:0)
x = [['car.abc', 1, 2], ['ship.abc', 3, 4]]
new_x=[]
for lst in x:
temp_lst=[]
for item in lst:
if(str(item)[-4:] == '.abc'):
item = str(item)[:-4]
temp_lst.append(item)
new_x.append(temp_lst)
print(new_x)