使用python中的regex从字符串中提取修剪数据

时间:2015-06-25 06:18:53

标签: python regex

我的文字格式如下

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为空字符串

1 个答案:

答案 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', '')
>>>