学习Python:从stdout将值存储到字典中

1 投票
3 回答
2608 浏览
提问于 2025-04-16 14:53

我想在Python中做到以下几点:

我有一个命令的输出,结果是这样的:

Datexxxx
Clientxxx
Timexxx

Datexxxx
Client2xxx
Timexxx

Datexxxx
Client3xxx
Timexxx

我想把这个结果处理成一个字典,像这样:

Client:(date,time), Client2:(date,time) ...

3 个回答

1

这样写怎么样:

rows = {}
thisrow = []

for line in output.split('\n'):
        if line[:4].lower() == 'date':
                thisrow.append(line)
        elif line[:6].lower() == 'client':
                thisrow.append(line)
        elif line[:4].lower() == 'time':
                thisrow.append(line)
        elif line.strip() == '':
                rows[thisrow[1]] = (thisrow[0], thisrow[2])
                thisrow = []

print rows

假设每行的末尾都有换行符,行前没有空格等等。

1

那如果用字典配合元组呢?

你可以创建一个字典,然后添加一些条目:

dict = {}
dict['Client'] = ('date1','time1')
dict['Client2'] = ('date2','time2')

访问这些条目:

dict['Client']
>>> ('date1','time1')
1

在把数据读入一个字符串 subject 之后,你可以这样做:

import re
d = {}
for match in re.finditer(
    """(?mx)
       ^Date(.*)\r?\n
       Client\d*(.*)\r?\n
       Time(.*)""", 
    subject):
        d[match.group(2)] = (match.group(1), match.group(2))

撰写回答