Python集删除非数值

Python集删除非数值,python,python-2.7,Python,Python 2.7,我设置了如下值: set(['Virtual', '120', 'P', '130', '90', '250', '100', '10', 'Mar', 'indicates', '18', '50', '40', '1', '|']) 如何删除所有非数值 预期产出: set(['120', '130', '90', '250', '100', '10','18', '50', '40', '1']) 您可以创建一个新集合: number_set = set() for object in

我设置了如下值:

set(['Virtual', '120', 'P', '130', '90', '250', '100', '10', 'Mar', 'indicates', '18', '50', '40', '1', '|'])
如何删除所有非数值

预期产出:

set(['120', '130', '90', '250', '100', '10','18',  '50', '40', '1'])

您可以创建一个新集合:

number_set = set()
for object in old_set:
    try: 
        number_set.add(int(object))
    except ValueError:
        print("Not a number")
print(number_set)
也可以尝试从集合中删除所有非数值对象:

for object in old_set:
    try:
        x = int(object)
    execpt ValueError:
        old_set.remove(object)
您可以使用清洁剂清洁电视机:

s = set(['Virtual', '120', 'P', '130', '90', '250', '100', '10', 'Mar', 'indicates', '18', '50', '40', '1', '|'])

def isInt(text):
    """Returns True for a text that is convertable to int() else False."""
    try:
        _ = int(text)
        return True
    except ValueError:
        return False

# apply filter:
filteredSet = set( filter(lambda x:isInt(x), s))

print(filteredSet)
输出:

{'18', '90', '130', '120', '40', '50', '10', '1', '100', '250'}

此输出与您想要的不同,但python就是这样用print打印集的。

您是否尝试过解决此问题?你面临什么问题?