0
line=a name="12123" adfii 41:05:992 wp=wp2 これは速度です: 最大ではなく制御されます。システムの time=300 ループ: process=16.0 sharesize=6b2k 。

等号の前後に行を再検索する最良の方法は何ですか。例 name=12123 time=300 process=16.0 sharesize=6b2k のままにしたい。それから辞書に入れる

4

1 に答える 1

0

次のことを試してください。

#!python3

import re

line = 'line=a name="12123" adfii  41:05:992 wp=wp2 this is the rate: controlled not max; time=300 loops for the system: process=16.0 sharesize=6b2k'

pattern = r'(\w+)=(\w+|".+?")'

lst = re.findall(pattern, line)
print(lst)

d = dict(lst)
print(d)
print(d['process'])

画面に次のように出力されます。

c:\tmp\___python\njau_ndirangu\so13758903>py a.py
[('line', 'a'), ('name', '"12123"'), ('wp', 'wp2'), ('time', '300'), ('process', '16'), ('sharesize', '6b2k')]
{'line': 'a', 'sharesize': '6b2k', 'time': '300', 'name': '"12123"', 'process': '16', 'wp': 'wp2'}
16

もちろん、直接書くこともできます:

d = dict(re.findall(r'(\w+)=(\w+|".+?")', line))

.findall、1 つの一致が要素 (パターン内の括弧内のもの) としてサブグループを持つタプルとして表される一致のリストを返します。

ただし、正規表現には注意してください。簡単に間違いを犯すことができます。

于 2012-12-07T12:39:35.730 に答える