我有这样的清单:
['8 ', '27', '90+1 ','27','90+3','47']
我的目标是这样:
['8', '27','90','27','90','47']
如何删除列表中的“+”标记和下一个数字?
答案 0 :(得分:5)
您可以使用以下表达式:
[x.split('+',1)[0] for x in data]
使用data
原始列表:
>>> [x.split('+',1)[0] for x in data]
['8 ', '27', '90', '27', '90', '47']
因此,我们使用split()
将字符串转换为子字符串列表,由+
分割。 1
是可选的,但会阻止系统创建更多元素。然后我们采用第一个子列表。
答案 1 :(得分:5)
使用正则表达式删除加号和后续字符听起来是合乎逻辑的方法:
import re
l = ['8 ', '27', '90+1 ','27','90+3','47']
newl = [re.sub("\+.*","",x) for x in l]
答案 2 :(得分:3)
我会构建一个接收字符串的方法,检查它是否具有' +'登录并删除它及其后的所有内容。
像这样:
def cleanmark(string):
if "+" in string:
return string.split('+')[0]
return string
然后我将它映射到原始列表。
a = ['8 ', '27', '90+1 ','27','90+3','47']
a = map(lambda x: cleanmark(x), a)
这应该足以删除' +'内容。
答案 3 :(得分:2)
做类似的事情:
original_list = ['8 ', '27', '90+1 ','27','90+3','47']
list_modified = [item.split('+')[0] for item in original_list]
答案 4 :(得分:1)
您可以按照以下流程操作:
list = ['8 ', '27', '90+1 ','27','90+3','47']
list1 = []
for k in list:
if '+' in k:
list1.append(k.split('+')[0])
else:
list1.append(k)
print(list1)
答案 5 :(得分:1)
如何删除列表中的“+”标记和下一个数字?
我对这句话的解释是,你想要更新当前列表而不是创建一个新列表,正如所有其他答案所做的那样。这样你就可以避免使用两倍的内存,而且可能更快。
def remove_plus_marks(l):
for i in range(len(l)):
k = l[i].find('+')
if k != -1:
l[i] = l[i][:k]
这里我们正在编辑当前列表而不是创建新列表,因此我们不必为所有项目进行内存分配。我们还使用find
方法而不是split
,因为它更快。