我有很多这样的清单
synonyms = ["3,2'-DIHYDROXYCHALCONE", '36574-83-1', '36574831', "2',3-Dihydroxychalcone", '(E)-1-(2-hydroxyphenyl)-3-(3-hydroxyphenyl)prop-2-en-1-one', MLS002693861]
我需要从中删除所有仅由数字组成的元素。我不知道如何删除元素 [1],因为它只是数字,但有随机的中间破折号。
当然,这是行不通的,因为破折号使元素不是数字:
synonym_subset = [x for x in synonym_subset if not (x.isdigit())]
我不能只删除破折号,因为我希望保留其他元素中的破折号:
synonym_subset = [x.replace('-','') for x in synonym_subset]
我可以运行上面的代码来查找要删除的元素的索引,然后以这种方式删除它们,但我希望得到一个单行代码。
谢谢。
尝试:
synonyms = [
"3,2'-DIHYDROXYCHALCONE",
"36574-83-1",
"36574831",
"2',3-Dihydroxychalcone",
"(E)-1-(2-hydroxyphenyl)-3-(3-hydroxyphenyl)prop-2-en-1-one",
"MLS002693861",
]
out = [s for s in synonyms if not all(ch in "0123456789-_" for ch in s)]
print(out)
打印:
[
"3,2'-DIHYDROXYCHALCONE",
"2',3-Dihydroxychalcone",
"(E)-1-(2-hydroxyphenyl)-3-(3-hydroxyphenyl)prop-2-en-1-one",
"MLS002693861",
]