我希望从字符串中选择域名并将其放入字典中。所以我在这个字符串上使用re.match()
和re.groupdict()
:
Location: hk USER: Will Lee PASS: 1234 INFO: www.hotmail.com
代码是
re.match(r"(?P<Domain>\.([a-zA-Z0-9]+?)\.(?=com))",str).groupdict()
这应该是一个字典,其中键是“域”,值是“hotmail”,但它以某种方式返回:
AttributeError: 'NoneType' object has no attribute 'groupdict'
我该如何解决这个问题?
答案 0 :(得分:1)
使用re.search
代替re.match
,因为匹配尝试从头开始查找文本。而且你需要在前瞻内部给出一个点,该点断言捕获一个或多个字母数字字符后跟字符串.com
>>> re.search(r'(?P<Domain>[a-zA-Z0-9]+)(?=\.com)', s).groupdict()
{'Domain': 'hotmail'}
答案 1 :(得分:0)
你应该使用re.match(?P&lt; .. dict key ...&gt;)和groupdict()。 代码:
import re
s="Location: hk USER: Will Lee PASS: 1234 INFO: www.hotmail.com"
yourDict = re.match(r"^Location: (?P<Location>\w+?) USER: (?P<User>.+?(?= PASS: .+? INFO: .+$)) PASS: (?P<Pass>.+?(?= INFO: .+$)) INFO: (?P<Doman>.+$)",s).groupdict()
=&GT; {'用户':'Will Lee','Doman':'www.hotmail.com','位置':'hk','通行证':'1234'}