python中文本的解析与排列

2024-04-26 07:44:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我在找出最好的实现方法时遇到了一些困难

我的文件中有以下格式的数据: |序列号#|机器|名称|机器|所有者|

如果一个机器所有者有多台机器,我希望这些机器在字段中以逗号分隔的列表显示。以便。你知道吗

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

看起来像这样:

|Fred Flinstone|mach1|
|Barney Rubble|mach2,mach3,mach4|
|Betty Rubble|mach5|

任何关于如何处理这一点的提示都将不胜感激。你知道吗


Tags: 文件数据方法机器格式fredbettyrubble
2条回答

您可以使用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)}|")

您需要将所有机器的名称存储在一个列表中。每次你想附加一个机器名时,你都要运行一个函数来确保这个名字不在列表中,这样它就不会再把它放在列表中了。你知道吗

将它们存储在一个名为data的数组中之后。重复这些名称。并使用此功能:

data[i] .append( [ ] )

在存储在第i个位置的每个机器名称后面添加一个列表。你知道吗

完成后,遍历这些名称并在文件中找到它们,然后附加所有者。你知道吗

所有这些都可以通过两个步骤完成。你知道吗

相关问题 更多 >