从列表列表中的第一项中删除字符

时间:2017-05-15 13:13:45

标签: python nested-lists strip

我有一个嵌套列表,在每个列表中,第一个项目是以.abc结尾的字符串。我想从嵌套列表中删除所有.abc个字符。

这是我的所得:

x = [['car.abc', 1, 2], ['ship.abc', 3, 4]]

我希望我的嵌套列表如下:

x = [['car', 1, 2], ['ship', 3, 4]]

我怎样才能做到这一点?

3 个答案:

答案 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)。

  • 对于字符串ere.sub(r'.abc$', '', e)会替换您指定的部分

  • 否则e不受影响

  • 对于e中的每个l,列表l中的任何元素x都会发生上述情况。

答案 2 :(得分:0)

Check online demo

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)