我的文字格式如下
address = "street: street A city: City B floor:"
我想从地址中提取街道,城市和楼层。这些值中的每一个都可以为空。
>>> address_pattern = re.compile(
... r'street:\s?(?P<street>.*)\s?'
... r'city:\s?(?P<city>.*)\s?'
... r'floor:\s?(?P<floor>.*)\s?'
... )
>>> address_pattern.search(address).groups()
('street A ', 'City B ', '')
正如您所看到的那样,字符串末尾有一个空格我想避免。
显然,这里的简单解决方案是strip
白色空间,但那里的乐趣在哪里?如果也可以让它返回None
为空字符串
答案 0 :(得分:0)
对匹配的组使用非贪婪的运算符,并在末尾使用贪婪的运算符来匹配空格:
>>> address_pattern = re.compile(
... r'street:\s?(?P<street>.*?)\s*'
... r'city:\s?(?P<city>.*?)\s*'
... r'floor:\s?(?P<floor>.*?)\s*'
... )
>>> address_pattern.search(address).groups()
('street A', 'City B', '')
>>>