例如有这样的手机:
phones = '+35(123) 456 78 90 (123) 555 55 55 (908)985 88 89 (593)592 56 95'
我需要得到:
phones_list = ['+35(123) 456 78 90', '(123) 555 55 55', '(908)985 88 89', (593)592 56 95]
尝试使用re
来解决,但对我来说却是一项艰巨的任务。
答案 0 :(得分:6)
此方法使用+
或(
来表示电话号码的开头。它不需要多个空格:
>>> phones = '+35(123) 456 78 90 (123) 555 55 55 (908)985 88 89 (593)592 56 95'
>>> re.split(r' +(?=[(+])', phones)
['+35(123) 456 78 90', '(123) 555 55 55', '(908)985 88 89', '(593)592 56 95']
这会根据一个或多个空格分隔字符串,后跟(
或+
。
在正则表达式中,+
匹配一个或多个空格。 (?=[(+])
是一个先见之明。它要求空格后跟(
或+
,但不会使用(
或+
。由于我们使用的是预测而不是普通匹配,因此前导(
和+
仍然是电话号码的一部分。