[英]Python Regular Expressions re.findall — split a string into two
我有这样的字符串:
“ C BOS-从皇家失望中交易”
我想将它们分为破折号之前的所有内容,以及之后的所有内容。 因此,只需在两个变量new1和new2中,使以上内容成为:
new1 =“ C BOS”
new2 =“因失望而交易”
我是新来的人,所以我不知道如何使findall正常工作。 这是我尝试的:
import re
myval = "C BOS - Traded from Royal Disappointments"
new1 = re.findall( r'*\s\s\-', myval )
new2 = re.findall( r'-\s*', myval)
我知道可能还没结束,但是我不清楚如何表达。
只要您的字符串示例成立,我将不做任何改动。
需要注意的事情:多于一个'-'
或没有'-'
您可能要处理拆分和分配的可能异常。
>>> example = "C BOS - Traded from Royal Disappointments"
>>> before, after = example.split('-')
>>> before = before.strip()
>>> after = after.strip()
>>> print before
C BOS
>>> print after
Traded from Royal Disappointments
>>>
使用re.split
:
>>> import re
>>> s = "C BOS - Traded from Royal Disappointments"
>>> re.split(r'\s*-\s*', s)
['C BOS', 'Traded from Royal Disappointments']
将结果分配给变量:
>>> new1, new2 = re.split(r'\s*-\s*', s)
>>> new1
'C BOS'
>>> new2
'Traded from Royal Disappointments'
非正则表达式版本,但需要两次通过:
>>> map(str.strip, s.split('-'))
['C BOS', 'Traded from Royal Disappointments']
如果字符串包含多个-
且您仍只希望拆分一次,则将拆分计数传递给re.split
:
>>> s = "C BOS - Traded from Royal Disappointments - foobar"
>>> re.split(r'\s*-\s*', s, 1)
['C BOS', 'Traded from Royal Disappointments - foobar']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.