2014-10-22 62 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

相關問題