簡體   English   中英

將Python字符串拆分為對列表

[英]Splitting Python string into list of pairs

我有以下格式的數據:

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

但我希望有一個更優雅的方式來做到這一點?

使用正則表達式(以及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個問題;)

在一線! 拆分字符串,並使用列表推導通過刪除所有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']

那么根據" 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']
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])]
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)]

不是很優雅,但如何:

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]

我不知道這是否是最美麗的方式,但它是一個單線解決方案:

[s.lstrip() + "g" for s in text.split("g") if s]

我不認為你的解決方案有問題,但通常的方法可能包括正則表達式

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM