Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用随机数和随机数下划线拆分字符串?_Python_List - Fatal编程技术网

Python 如何使用随机数和随机数下划线拆分字符串?

Python 如何使用随机数和随机数下划线拆分字符串?,python,list,Python,List,我想剪切以下字符串:0.343\uuuuuuuuu0.2\uuuuuuuu0.07\uuuuuuuuuuu0\uuuuuu0,使用随机数和数字之间的随机空格,并得到以下列表:[0.343,0.2,0.07,0,0]。如何做到这一点?在交互式Python终端中演示string.split()方法的使用。使用filter进行附加筛选以删除空字符串。请注意,filter返回一个迭代器,因此我们将其包装在list中以返回一个列表 >>> s = '0.343___0.2___0.07_

我想剪切以下字符串:
0.343\uuuuuuuuu0.2\uuuuuuuu0.07\uuuuuuuuuuu0\uuuuuu0
,使用随机数和数字之间的随机空格,并得到以下列表:
[0.343,0.2,0.07,0,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]

在交互式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]
用于在您的案例中拆分一个或多个分隔符
'

>>> 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]
用于在您的案例中拆分一个或多个分隔符
'

>>> 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]

要做到这一点,最具python风格的方式可能是:

b = [float(x) for x in a.split('_') if x]
其中
a='0.343\uuuuuuuuuuuuuu0.2\uuuuuuuuuuuu0.07\uuuuuuuuuuuuuuuuu0'

@保罗·鲁尼:

>>a.split('_') 
给予


然后将其过滤到预期答案

实现这一点的最具python风格的方法可能是:

b = [float(x) for x in a.split('_') if x]
import re
source = '0.343___0.2___0.07___0___0'
output = [float(each) for each in re.split(r'_+', source)]
print(output)
其中
a='0.343\uuuuuuuuuuuuuu0.2\uuuuuuuuuuuu0.07\uuuuuuuuuuuuuuuuu0'

@保罗·鲁尼:

>>a.split('_') 
给予


然后过滤到期望的答案

你尝试过拆分吗?
s.split(“')
如果你使用下划线,或者
s.split()
如果你使用空格。我尝试过拆分,但我得到了类似于['0.343'、''、'0.2'、''、'0.07…]天哪,对不起,我使用了拆分('')而不是拆分(),这就是原因,谢谢!列表理解与拆分相结合可能是实现这一点的最有效的方法。你尝试过拆分吗?
s.split(“''')
如果你使用下划线,或者
s.split()
如果你使用空格。我尝试过拆分,但我得到了类似的东西['0.343'、'''、'0.2'、''、'0.07……]天啊,对不起,我使用了拆分('')而不是拆分(),这就是为什么,谢谢!列表理解与拆分相结合可能是实现这一点的最具魔力的方式。杰克的方式我的答案…哈哈,好吧,你得到了我的投票。我真的只是想纠正我的断言,
filter
是更好的方法,因为如果你无论如何都要做列表比较,那就不是了。我的答案…哈哈,你得到了我的选票。我真的只是想纠正我的断言,
filter
是更好的方法,因为如果你无论如何都要做列表比较,那就不是了。请避免只给出代码的答案,并尝试提供一些解释。其他发现这个问题的人可能没有你有那么多的Python经验;帮助他们理解您的解决方案。请避免只给出代码答案,并尝试提供一些解释。其他发现这个问题的人可能没有你有那么多的Python经验;帮助他们理解您的解决方案。
import re
source = '0.343___0.2___0.07___0___0'
output = [float(each) for each in re.split(r'_+', source)]
print(output)