2013-12-08 33 views
1

我有这样的字符串:Python的正则表达式re.findall - 将一个字符串分解成两个

“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) 

我知道这可能不是很接近但我不清楚如何表达。

+4

你可以通过'your_string.split'(' - ')'逃脱吗? –

回答

2

使用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'] 

如果字符串包含超过1 -,你仍然想只有一次拆分,再经过分计数re.split

>>> s = "C BOS - Traded from Royal Disappointments - foobar" 
>>> re.split(r'\s*-\s*', s, 1) 
['C BOS', 'Traded from Royal Disappointments - foobar'] 
2

我会做到这一点无需重新,只要你的字符串例子也是如此。

旅游注意:超过一个'-'或没有'-'

您可能需要办理分割和分配可能是个例外。

>>> 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 
>>> 
相关问题