从以下列表中,如何删除以Text结尾的元素。
我的预期结果为a=['1,2,3,4']
我的列表是a=['1,2,3,4,5Text,6Text']
我应该使用endswith来解决这个问题吗?
答案 0 :(得分:4)
在逗号上拆分,然后过滤仅为数字的字符串:
a = [','.join(v for v in a[0].split(',') if v.isdigit())]
演示:
>>> a=['1,2,3,4,5Text,6Text']
>>> [','.join(v for v in a[0].split(',') if v.isdigit())]
['1,2,3,4']
它看起来就像你真的想要处理多个元素的列表一样,此时你可以只过滤:
a = ['1', '2', '3', '4', '5Text', '6Text']
a = filter(str.isdigit, a)
或者,使用列表理解(也更适合Python 3):
a = ['1', '2', '3', '4', '5Text', '6Text']
a = [v for v in a if v.isdigit()]
答案 1 :(得分:1)
使用str.endswith
过滤掉这些项目:
>>> a = ['1,2,3,4,5Text,6Text']
>>> [','.join(x for x in a[0].split(',') if not x.endswith('Text'))]
['1,2,3,4']
此处str.split
将字符串拆分为','
并返回一个列表:
>>> a[0].split(',')
['1', '2', '3', '4', '5Text', '6Text']
现在过滤掉此列表中的项目,然后使用str.join
将其加入。
答案 2 :(得分:0)
试试这个。这适用于你最后的每一个文本。
a=['1,2,3,4,5Text,6Text']
a = a[0].split(',')
li = []
for v in a:
try : li.append(int(v))
except : pass
print li