2016-03-14 59 views
-2

我正在使這個簡單的程序從字符串中提取所有數字並將它們放入列表中。當我打印它的輸出是:[]。有人能幫我嗎?Python:從字符串中提取數字並將數字放入列表中

new = [] 
def extract_nums(string): 
    trash = [] 
    for x in string: 
     if x.isalpha: 
      trash.append(x) 
     else: 
      new.append(x) 
extract_nums("hello 123") 
print new 
+3

既然你'print' ** **之前調用該函數,*地球上能有什麼辦法?!* – jonrsharpe

+0

只需將打印到下一行沒有新的,它應該工作,你所希望的方式。 – Trey50Daniel

+0

對不起事故... – drewteriyaki

回答

0

您的代碼的主要問題是isalpha()需要括號。這裏是代碼固定:

new = [] 
def extract_nums(string): 
    trash = [] 
    for x in string: 
     if x.isalpha(): # added parentheses 
      trash.append(x) 
     else: 
      new.append(x) 

extract_nums("hello 123") 
print(new) 

一個更好的想法完全是使用isnumeric()提取的數字是這樣的:

new = [] 
def extract_nums(string): 
    for x in string: 
     if x.isnumeric(): 
      new.append(x) 

extract_nums("hello 123") 
print(new) 

的原因,二是更好的是,因爲第一個會輸出空白和其他字符實際上不是數字。如果您只想要數字,請使用第二種方法。

+0

我只是試圖運行它,並說:「ISNUMERIC不一個東西」。 – drewteriyaki

+0

也許這可能是蟒蛇2.x和3.x之間的區別? – Ilja

-1

我找到了正確的答案。

new = [] 
def extract_nums(string): 
    trash = [] 
    for x in string: 
     if x.isalpha(): 
      trash.append(x) 
     elif x == ' ': 
      trash.append(x) 
     else: 
      new.append(x) 
extract_nums("hello 123") 
print (new) 
+0

這樣做的問題是,字符,例如@,#,$ {等仍然會在列表中的函數運行之後。至於使用列表理解,你的答案也不使用列表理解。 – MarkyPython

0

你想要一個字符串列表,還是將它們轉換爲數字?在這種情況下,使用try應該是最優雅,解決這兩個問題(我的意思是,刪除一切,是不是數字,並將其轉換)

new = [] 
def extract_nums(string): 
    for x in string: 
     try: 
      new.append(int(x))    
     except ValueError: 
      continue 

extract_nums("hello 123") 
print(new) 

我修改你的代碼儘可能少。