python - 变换|字典中的分隔值

标签 python dictionary

我需要将下面报告的数据字符串转换为以时间戳(第一个数字元素)作为键的字典。我该怎么做?

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/

相关文章:

python - 从 Linux 连接到 Sun ONC RPC 服务器

python - 在包含数组元素的数据帧上应用 numpy 运算和向量索引的自然方法

python - dask 可以用于在核心之外进行分组和重新编码吗?

python-2.7 - 在字典中打印多个 YAML 列表

python - 添加日期,检查是否已过期

python - 如何将列表转换为字典?

python-3.x - Python 3 使用字典的登录程序

python - 将数组放入 WHERE 语句中 - MySQLdb、Python

java - 缓存使用多个参数构建的对象

Python - PyQt4 窗口选项未显示在制作窗口的角落