2016-02-24 129 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”。 –