2016-02-24 165 views
0

我明白如何擺脫某些文本,但是當涉及到數字時,它會與其中的其他數字發生衝突。刪除某些數字python

def get_team_odds(soup): 
    for i in soup: 
     soup_output = (i.get_text()) 
     bleach_characters = soup_output.lstrip("Value") 
     return(bleach_characters.replace("for","")) 

如果我使用replacestrip這給出了0.57 10 0

我需要擺脫10的輸出和0。然而。它也從第一個中刪除了一些數字。所以如果輸出是10.07,它會給我.7,因爲它擺脫了所有的10和0。如何根據職位或其他方式擺脫某些數字。

回答

0

您可以將您的字符串轉換爲一個子字符串列表。例如:

x = '0.57 10 0' 

#separate the space delimited string into a list containing substrings 
y = x.split(' ') 

#you can access an element from your list 
print y[0] 

#or all of the elements 
for i in y: 
    print i 
+0

謝謝,我用過:words = new_chars.split('') return words [0]。完美工作 –

+0

很高興我能幫上忙。如果你的問題得到解答,請投票給我的回覆。 –

0

您需要在輸出字符串的邏輯段的工作,而不是字符replace做:

output = ' '.join(x for x in output.split() if x not in ('10', '0')) 

這也將空白標準化,因此,如果這不是你確定,一些更復雜的需要。

+0

謝謝,其分割部分我不明白,現在我知道了:d –

+0

列表解析會不必要的開銷和複雜性添加到該任務。 split('regex')函數包含原始問題中描述的所有功能。 –

+0

我不明白你對幾個帳戶的評論。首先,我不使用列表理解。 join的參數是一個生成器表達式,它不會在內存中建立一個列表,所以沒有開銷。其次,答案中的「split」不使用正則表達式,而是使用簡單的字符匹配。第三,正則表達式被廣泛認爲比不依賴它們的解決方案更復雜(儘管這不一定是我個人的觀點)。此外,我不明白爲什麼您的使用示例在打印之前將轉換回字符串的原因轉換爲「int」。 –