我需要将下面报告的数据字符串转换为以时间戳(第一个数字元素)作为键的字典。我该怎么做?
element=20151201091000|22844.4|22786.2|22801.6|22839.7|1091
element=20151201091500|22839.6|22798.3|22837.9|22801.7|477
element=20151201092000|22800.4|22770.3|22799.1|22772.7|420
最佳答案
无需正则表达式即可轻松完成此操作:
s = """element=20151201091000|22844.4|22786.2|22801.6|22839.7|1091
element=20151201091500|22839.6|22798.3|22837.9|22801.7|477
element=20151201092000|22800.4|22770.3|22799.1|22772.7|420"""
def pairs(s):
for line in s.splitlines():
spl = line.split("=")[1].split("|")
yield spl[0], spl[1:]
print(dict(pairs(s)))
或者使用 python3 可以解压:
def pairs(s):
for line in s.splitlines():
k,*vals = line.split("=")[1].split("|")
yield k, vals
print(dict(pairs(s)))
两者都会给你:
{'20151201091000': ['22844.4', '22786.2', '22801.6', '22839.7', '1091'], '20151201091500': ['22839.6', '22798.3', '22837.9', '22801.7', '477'], '20151201092000': ['22800.4', '22770.3', '22799.1', '22772.7', '420']}
如果你想转换:
def pairs(s):
for line in s.splitlines():
k,*vals = map(float, line.split("=")[1].split("|"))
yield k, vals
print(dict(pairs(s)))
输出:
{20151201091000.0: [22844.4, 22786.2, 22801.6, 22839.7, 1091.0], 20151201092000.0: [22800.4, 22770.3, 22799.1, 22772.7, 420.0], 20151201091500.0: [22839.6, 22798.3, 22837.9, 22801.7, 477.0]}
关于python - 变换|字典中的分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34253156/