想要在python中搜索给定字符串中的数值

时间:2017-10-12 13:02:49

标签: python

string3 = "abc 123 $$%%"

list1 = string3.split()
print(list1)
for i in list1:
    if int(i) > 0:
        print("it's a number")
    else:
        print("not a number")

获得以下错误:

if int(i) > 0:
ValueError: invalid literal for int() with base 10: 'abc'

5 个答案:

答案 0 :(得分:0)

>>> str = "abc 123 $$%%"
>>> [int(s) for s in str.split() if s.isdigit()]
[123]

答案 1 :(得分:0)

使用i.isdigit()

string3 = "abc 123 $$%%"

list1 = string3.split() 
print(list1)
for i in list1:
    if i.isdigit():
        print("it's a number") 
    else: 
        print("not a number")

答案 2 :(得分:0)

奇特的方式:

>>> s = "abc 123 $$%%"
>>> map(int,filter(str.isdigit,s.split()))
[123]

说明:

  • s.split()将字符串拆分为空格并生成:['abc', '123', '$$%%']
  • str.isdigit是一个函数,如果参数中的所有字符都是数字,则返回True
  • filter过滤掉未通过测试的列表元素。第一 参数是测试函数:str.isdigit,第二个参数是列表。
  • 最后,map将一个列表转换为另一个列表。第一个参数是转换函数int,第二个参数是从filter找到的列表。

答案 3 :(得分:0)

试试这个

string3 = "abc 123 $$%%"

list1 = string3.split()
print(list1)
for i in list1:
    if i.isdigit():
        print("it's a number")
    else:
        print("not a number")

<强>输出
[&#39; abc&#39;,&#39; 123&#39;,&#39; $$ %%&#39;]
不是数字
它是一个数字 不是数字

答案 4 :(得分:0)

string3 = "abc 123 $$%%"

list1 = string3.split()
print(list1)
for i in list1:
    try:
        int(i)
        print("It is a number")
    except ValueError:
        print("It is not a number")

试试此代码