如何用随机数和随机数下划线分割字符串?

时间:2016-12-20 00:44:33

标签: python list

我想剪切以下字符串:0.343___0.2___0.07___0___0随机数字和数字之间的随机空格,并获得以下列表:[0.343, 0.2, 0.07, 0, 0]。怎么办呢?

4 个答案:

答案 0 :(得分:4)

执行此操作的最pythonic方式可能是:

b = [float(x) for x in a.split('_') if x]

其中a = '0.343___0.2___0.07___0___0'

@Paul Rooney:

>>a.split('_') 

给出

['0.343', '', '', '0.2', '', '', '0.07', '', '', '0', '', '', '0']

然后过滤到预期答案

答案 1 :(得分:0)

在交互式Python终端中工作以演示string.split()方法的使用。使用filter进行额外过滤以删除空字符串。请注意filter返回一个迭代器,因此我们将其包装在list中以返回一个列表。

>>> s = '0.343___0.2___0.07___0___0'
>>> s.split('_')
['0.343', '', '', '0.2', '', '', '0.07', '', '', '0', '', '', '0']
>>> list(filter(None, s.split('_')))
['0.343', '0.2', '0.07', '0', '0']

过滤掉空字符串的另一种方法是使用列表解析:

>>> [x for x in s.split('_') if x]
['0.343', '0.2', '0.07', '0', '0']

但是,filter方法比列表理解快得多。如果你也必须转换为花车(抱歉,只是注意到这是问题的一部分),那么列表理解是要走的路:

>>> [float(x) for x in s.split('_') if x]
[0.343, 0.2, 0.07, 0.0, 0.0]

答案 2 :(得分:0)

使用re拆分案例'_'中分隔符的一个或多个出现位置:

>>> import re
>>> str = "0.343___0.2___0.07___0___0"
>>> list(map(float, re.split("_+",str)))
[0.343, 0.2, 0.07, 0.0, 0.0]

答案 3 :(得分:0)

import re
source = '0.343___0.2___0.07___0___0'
output = [float(each) for each in re.split(r'_+', source)]
print(output)