2014-10-22 65 views
0

假设你有一个可怕的长文本。在文本中可以通过以下正则表达式解析加速度值。你想从文本中获取值(如果你有更好的方法,不一定用那个正则表达式),并且你希望结果是一个字符串匹配整数的字典。来自解析文本的字典。更简单的方法来创建?

示例代码查找一个代码库,部分是由非蟒蛇编码管理有点太复杂了:

import re 
long_text = "<an awful long text>Accel X, Y, Z: -39mg, 7mg, 789mg<which is not necessarily separated by line breaks or any kind of brackets>" 
match = re.search("Accel X, Y, Z: (-?\d+)mg, (-?\d+)mg, (-?\d+)mg", a) 
# described as unreadable by non-python colleagues: 
desired_result = dict(zip(("x","y","z"),map(int,match.groups()))) 

回答

2

风格问题几乎是主观的,我个人的偏好是为了避免“聪明”的结构和是明确和详细:

desired_result = { 
    'x': int(match.group(1)), 
    'y': int(match.group(2)), 
    'z': int(match.group(3)) 
} 

当然,如果你有多个按键,这将获得在某些时候真的很愚蠢,但我仍然宁愿在map一个理解:

result = {k: int(v) for k, v in zip("abcdefgh", match.groups())} 

顺便说一句,你可以简化到

dict(zip("xyz",map(int,match.groups()))) 

无需一个元组。

+0

我喜欢理解部分,也只是使用字符串。不知道为什么我没有想到那个。 – erikbwork 2014-10-22 11:06:47

相关问题