【问题标题】:Python Regular Expressions re.findall -- split a string into twoPython 正则表达式 re.findall -- 将一个字符串分成两部分
【发布时间】:2013-12-08 01:09:55
【问题描述】:

我有这样的字符串:

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

我知道它可能不接近,但我不清楚如何表达。

【问题讨论】:

  • 你能逃脱your_string.split(' - ')吗?

标签: python regex string python-2.7


【解决方案1】:

只要您的字符串示例成立,我会在没有 re 的情况下执行此操作。

注意事项:不止一个'-' 或没有'-'

您可能希望处理拆分和分配的可能异常。

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

【讨论】:

    【解决方案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']
    

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 2013-10-19
      • 1970-01-01
      • 2015-12-31
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      相关资源
      最近更新 更多