Python从lis中删除特定字符串

2024-09-28 19:07:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从列表中删除任何包含字母或特殊字符的字符串。你知道吗

test = ["1.0","2.0","3","asdf","1.0f","1f","@#$aa1", "4"]

我想要的结果是一个新的列表。你知道吗

newTest = ["1.0","2.0","3", "4"]

Tags: 字符串test列表字母asdf特殊字符aa1newtest
3条回答

使用try块比使用正则表达式更容易:

newTest = []

for i in test:
    try:
        float(i) # numeric
        newTest.append(i)

    except:
        pass

如果您只想要数字,可以执行以下操作:

def try_parse(s):
  try:
    f = float(s)
    return 1
  except ValueError:
    return 0

test = ["1.0","2.0","3","asdf","1.0f","1f","@#$aa1", "4"]

t2 = [i for i in test if try_parse(i)==1]
print(t2)

给你:

['1.0', '2.0', '3', '4']

如果你想让它们直接浮动:

def try_parse(s):
  try:
    return float(s)
  except ValueError:
    return 'error'

test = ["1.0","2.0","3","asdf","1.0f","1f","@#$aa1", "4"]

t2 = [try_parse(i) for i in test if try_parse(i)!='error']
print(t2)

提供:

[1.0, 2.0, 3.0, 4.0]

您可以使用re.match

>>> import re
>>> [i for i in test if re.match(r'^[\d.]+$',i)]
['1.0', '2.0', '3', '4']

r'^[\d.]+$'将只匹配长度为1或更多的点和数字的任何组合。你知道吗

相关问题 更多 >