2017-10-12 57 views
-3
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' 
+1

你认为'int('$$ %%')'应该返回什么? – mshsayem

+0

[请求用户输入,直到他们给出有效响应]的可能重复(https://stackoverflow.com/questions/23294658/asking-the-user-for-input-until-they-give-a-valid-响应) – Reti43

回答

0
>>> str = "abc 123 $$%%" 
>>> [int(s) for s in str.split() if s.isdigit()] 
[123] 
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") 
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找到的列表。
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") 

输出
[ 'ABC', '123', '$$ %%']
不是数字
它是一个数
非数字

+0

谢谢....现在工作正常。 – BlackMamba

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") 

试试这个代码