我的数据格式如下:
"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])
但我希望这样做有一种更优雅的方式吗?
答案 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']