首页 > 解决方案 > 在python中解析和排列文本

问题描述

我在找出最佳实施时遇到了一些麻烦

我在文件中有这种格式的数据:|serial #|machine_name|machine_owner|

如果 machine_owner 有多台机器,我希望这些机器显示在字段中以逗号分隔的列表中。以便。

|1234|弗雷德·弗林斯通|mach1|
|5678|巴尼瓦砾|mach2|
|1313|巴尼瓦砾|mach3|
|3838|巴尼瓦砾|mach4|
|1212|贝蒂瓦砾|mach5|

看起来像这样:

|弗雷德·弗林斯通|mach1|
|巴尼瓦砾|mach2,mach3,mach4|
|贝蒂瓦砾|mach5|

任何有关如何解决此问题的提示将不胜感激。

标签: pythontext

解决方案


您可以将dict其用作临时容器按名称分组,然后以所需格式打印:

import re

s = """|1234|Fred Flinstone|mach1|
|5678|Barney Rubble|mach2|
|1313|Barney Rubble||mach3|
|3838|Barney Rubble||mach4|
|1212|Betty Rubble|mach5|"""

results = {}
for line in s.splitlines():
    _, name, mach = re.split(r"\|+", line.strip("|"))
    if name in results:
        results[name].append(mach)
    else:
        results[name] = [mach]

for name, mach in results.items():
    print(f"|{name}|{','.join(mach)}|")

推荐阅读