繁体   English   中英

Python正则表达式re.findall-将字符串拆分为两个

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM