【问题标题】:Extract string within parentheses - PYTHON提取括号内的字符串 - PYTHON
【发布时间】:2016-12-24 06:31:02
【问题描述】:

我有一个字符串“Name(something)”,我正在尝试提取括号内的字符串部分!

我尝试了以下解决方案,但似乎没有得到我想要的结果。

n.split('()')

name, something = n.split('()')

【问题讨论】:

  • 好问题!蟒蛇。
  • 谢谢!男生错误!

标签: python string split extract


【解决方案1】:

您可以使用简单的正则表达式来捕获括号之间的所有内容:

>>> import re
>>> s = 'Name(something)'
>>> re.search('\(([^)]+)', s).group(1)
'something'

正则表达式匹配第一个“(”,然后匹配所有“)”:

  • \( 匹配字符“(”字面意思
  • 捕获组([^)]+) 贪婪地匹配任何不是“)”的东西

【讨论】:

  • 谢谢!有道理,但是我得到了 re 没有定义的错误,你需要为这个函数导入一个库吗?
  • @olly_t import re
【解决方案2】:

作为对@Maroun Maroun 答案的改进:

re.findall('\(([^)]+)', s)

查找括号之间的所有字符串实例

【讨论】:

    【解决方案3】:

    你可以像在你的例子中那样使用拆分,但是这样

    val = s.split('(', 1)[1].split(')')[0]
    

    或使用正则表达式

    【讨论】:

    • i/p cmd = (0, 45, -4, -9) after print('cmd =',cmd.split('(', 1)[1].split(') ')[0]) o/p cmd = 0, 45, -4, -9
    【解决方案4】:

    你可以使用re.match:

    >>> import re
    >>> s = "name(something)"
    >>> na, so = re.match(r"(.*)\((.*)\)" ,s).groups()
    >>> na, so
    ('name', 'something')
    

    匹配两个(.*),这意味着任何东西,第二个在括号\(\)之间。

    【讨论】:

      【解决方案5】:

      您可以查找()(需要在正则表达式中使用反斜杠转义这些字符),然后使用.* 匹配每个字符(将其捕获在一个组中)。

      例子:

      import re
      
      s = "name(something)"
      
      regex = r'\((.*)\)'
      
      text_inside_paranthesis = re.match(regex, s).group(1)
      
      print(text_inside_paranthesis)
      

      输出:

      something
      

      没有正则表达式,您可以执行以下操作:

      text_inside_paranthesis =  s[s.find('(')+1:s.find(')')]
      

      输出:

      something
      

      【讨论】:

        猜你喜欢
        • 2016-08-19
        • 2019-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-24
        • 2020-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多