[英]python regex: create dictionary from string
我有一個字符串,其中包含多種信息,我想保存在字典中:
s1 = "10:12:01 R1 3 E44"
s2 = "11:11:01 R100 E400"
pattern = "\d{2}:\d{2}:\d{2}(\,\d+)?" + \
" +" + \
"[0-9A-Za-z _]{2}([0-9A-Za-z _]{1})?([0-9A-Za-z _]{1})?" + \
" +" + \
"[0-9A-Za-z _]{2}([0-9A-Za-z _]{1})?([0-9A-Za-z _]{1})?$"
# -->
d1 = {"time" : "10:12:01",
"id1" : "R1 3",
"id2" : "E44"}
d2 = {"time" : "11:11:01",
"id1" : "R100",
"id2" : "E400"}
有沒有辦法直接用python re做到這一點?
注意:我知道這里有一個類似的問題: regex表達式字符串字典python ,但是表述並沒有精確地指向我作為答案的含義。
如果信息完全由空格分隔,為什么不使用該信息按空格分隔字符串並創建結果字典列表。
如果我們有多個空格,則可以在使用re.split進行拆分時忽略這些空格
import re
#List of strings
li = [ "10:12:01 R1 3 E44", "11:11:01 R100 E400"]
#List of kyes
keys = ['time', 'id1', 'id2']
#Create the dictionary from keys from keys listand values obtained by splitting string on 2 or more whitespaces
result = [{keys[idx]:re.split(r'\s{2,}', s)[idx] for idx in range(len(keys))} for s in li]
print(result)
輸出將是
[
{'time': '10:12:01', 'id1': 'R1 3', 'id2': 'E44'},
{'time': '11:11:01', 'id1': 'R100', 'id2': 'E400'}
]
>>> import re
>>> pattern = "(?P<time>\d{2}:\d{2}:\d{2}(\,\d+)?) +(?P<id1>[0-9A-Za-z_]{2}([0-9A-Za-z1-9_]{1})?([0-9A-Za-z_]{1})?) +(?P<id2>[0-9A-Za-z_]{2}([0-9A-Za-z1-9_]{1})?([0-9A-Za-z_]{1})?$)"
>>>
>>> s1 = "10:12:01 R123 E44"
>>> print(re.match(pattern, s1).groupdict())
{'time': '10:12:01', 'id1': 'R123', 'id2': 'E44'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.