将Python字符串拆分为对列表

时间:2017-11-09 13:11:54

标签: python python-2.7 list

我的数据格式如下:

"22.926 g 47.377 g 73.510 g 131.567 g 322.744 g"

我想做的是将其拆分成一个列表,以便将值和单位组合在一起,例如:

["22.926 g","47.377 g","73.510 g","131.567 g","322.744 g"]

当然,在Python 2.7中,我可以这么做:

result = []
tokens = "22.926 g 47.377 g 73.510 g 131.567 g 322.744 g".split()
for index,item in enumerate(tokens[::2]):
    result.append(item+" "+tokens[index+1])

但我希望这样做有一种更优雅的方式吗?

8 个答案:

答案 0 :(得分:4)

使用正则表达式(以及re.findall方法),您可以获得所需内容:

import re
text="22.926 g 47.377 g 73.510 g 131.567 g 322.744 g"
re.findall("\d+\.\d+ g", text)
>>>['22.926 g', '47.377 g', '73.510 g', '131.567 g', '322.744 g']

但请记住,在使用正则表达式解决问题时,我们通常会遇到2个问题;)

答案 1 :(得分:2)

单行!拆分字符串,并使用列表理解通过删除所有g并附加g来获得所需的输出!

s="22.926 g 47.377 g 73.510 g 131.567 g 322.744 g"
>>> [x+' g' for x in s.split() if x!='g']

输出

['22.926 g', '47.377 g', '73.510 g', '131.567 g', '322.744 g']

答案 2 :(得分:2)

如何根据" g"拆分并删除/过滤掉空字段,然后在一行中重新添加g后缀:

["{} g".format(x.strip()) for x in "22.926 g 47.377 g 73.510 g 131.567 g 322.744 g".split(" g") if x]

结果:

['22.926 g', '47.377 g', '73.510 g', '131.567 g', '322.744 g']

答案 3 :(得分:1)

a = "22.926 g 47.377 g 73.510 g 131.567 g 322.744 g".split()
c = [" ".join((v, g)) for v,g in zip(a[:-1:2], a[1::2])]

答案 4 :(得分:1)

data = "22.926 g 47.377 g 73.510 g 131.567 g 322.744 g"
sep = 'g'
result = ['{digit} {sep}'.format(digit=d.strip(), sep=sep) for d in data[:-1].split(sep)]

答案 5 :(得分:0)

不是很优雅,但是如何:

s = "22.926 g 47.377 g 73.510 g 131.567 g 322.744 g"
l = s.strip('g').split('g')
l = [item + 'g' for item in l]

答案 6 :(得分:0)

我不知道这是否是最美丽的方式,但它是一个单线解决方案:

(function(H) {
  H.wrap(H.Chart.prototype, 'pan', function(proceed) {
    console.log("panning...");
    proceed.call(this, arguments[1], arguments[2]);
  });
})(Highcharts);

答案 7 :(得分:0)

我不认为您的解决方案有问题,但通常的方法可能包含regular expression

import re

input = "22.926 g 47.377 g 73.510 g 131.567 g 322.744 g"
result = p.findall(r'(\d+\.\d+ g)', input)
print(result)

打印

['22.926 g', '47.377 g', '73.510 g', '131.567 g', '322.744 g']