2017-10-12 66 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") 

試試這個代碼