Aiu*_* YO 6 python arrays string
有这一行:
Breathing 1:-31.145 9:-32.8942 13:-35.8225 2:-35.9872 17:-36.2135 16:-36.6343 12:-36.7487 4:-37.8538 8:-38.6924 7:-39.0389 14:-39.0697 18:-40.0523 3:-40.5393 15:-40.5825 5:-41.6323 11:-45.2976 10:-53.3063 6:-231.617
Run Code Online (Sandbox Code Playgroud)
' ',':-'我想将除分隔符( )之外的所有内容存储在数组中
更新:我没有意识到这Breathing是您数据的一部分。在这种情况下,您将获得所有字符串。
假设:
b = 'Breathing 1:-31.145 9:-32.8942 13:-35.8225 2:-35.9872'
Run Code Online (Sandbox Code Playgroud)
那么这个简单的构造:
b.replace(':-',' ').split()
Run Code Online (Sandbox Code Playgroud)
会给:
['Breathing', '1', '31.145', '9', '32.8942', '13', '35.8225', '2', '35.9872']
Run Code Online (Sandbox Code Playgroud)
说明:它:-用空格 ( ' ') 替换任何内容。然后,它会在有空格的地方分割字符串以获取字符串列表。
要获取float数字的值:
['Breathing'] + [float(i) for i in b.replace(':-',' ').split()[1:]]
Run Code Online (Sandbox Code Playgroud)
结果是:
['Breathing', 1.0, 31.145, 9.0, 32.8942, 13.0, 35.8225, 2.0, 35.9872]
Run Code Online (Sandbox Code Playgroud)
解释:与上面类似,除了float()用于所有数字字符串以将它们转换为浮点数,并且“Breathing”字符串被放置在列表的开头。
这re.split是执行此操作的一种简单方法 - 在这种情况下,您想要拆分一组分隔符:
>>> import re
>>> thestring = "Breathing 1:-31.145 9:-32.8942 13:-35.8225 2:-35.9872 17:-36.2135 16:-36.6343 12:-36.7487 4:-37.8538 8:-38.6924 7:-39.0389 14:-39.0697 18:-40.0523 3:-40.5393 15:-40.5825 5:-41.6323 11:-45.2976 10:-53.3063 6:-231.617"
>>> re.split(r"[ :\-]+", thestring)
['Breathing', '1', '31.145', '9', '32.8942', '13', '35.8225', '2', '35.9872', '17', '36.2135', '16', '36.6343', '12', '36.7487', '4', '37.8538', '8', '38.6924', '7', '39.0389', '14', '39.0697', '18', '40.0523', '3', '40.5393', '15', '40.5825', '5', '41.6323', '11', '45.2976', '10', '53.3063', '6', '231.617']
Run Code Online (Sandbox Code Playgroud)
[]定义一个字符集,包含空格、:、 和-(需要转义,因为它用于像 之类的范围[a-z]) -+字符集后面的表示一个或多个
要在空格或 上显式分割:-,您可以使用|or 正则表达式:
>>> re.split(":-| ", thestring)
['Breathing', '1', '31.145', ...]
Run Code Online (Sandbox Code Playgroud)
正如我在对该问题的评论中提到的,我本以为分隔符只是:并且-表示负数。
您可以使用str.split([sep[, maxsplit]])
返回字符串中单词的列表,使用 sep 作为分隔符字符串。如果给出 maxsplit,则最多完成 maxsplit 分割(因此,列表最多有 maxsplit+1 个元素)。如果未指定 maxsplit 或为 -1,则拆分数量没有限制(进行所有可能的拆分)。
应用
>> ' 1 2 3 '.split()
['1', '2', '3']
Run Code Online (Sandbox Code Playgroud)
“同时”与str.replace(old, new[, count])
返回字符串的副本,其中所有出现的子字符串 old 都被 new 替换。如果给出了可选参数 count,则仅替换第一个出现的 count。
应用
>>> a = 'h!e!l!l!o! w!o!r!l!d!'
>>> a.replace('!','')
'hello world'
Run Code Online (Sandbox Code Playgroud)
适用于您的场景:
>> 'Breathing 1:-31.145 9:-32.8942 13:-35.8225 2:-35.9872 17:-36.2135 16:-36.6343
12:-36.7487 4:-37.8538 8:-38.6924 7:-39.0389 14:-39.0697 18:-40.0523
3:-40.5393 15:-40.5825 5:-41.6323 11:-45.2976 10:-53.3063
6:-231.617'.replace(':-',' ').split(' ')
['Breathing', '1', '31.145', '9', '32.8942', '13', '35.8225', '2',
'35.9872', '17', '36.2135', '16', '36.6343', '12', '36.7487', '4', '37.8538',
'8', '38.6924', '7', '39.0389', '14', '39.0697', '18', '40.0523', '3',
'40.5393', '15', '40.5825', '5', '41.6323', '11', '45.2976',
'10', '53.3063', '6', '231.617']
Run Code Online (Sandbox Code Playgroud)
所有定义均取自手册
| 归档时间: |
|
| 查看次数: |
24436 次 |
| 最近记录: |