【问题标题】:returning info from a string从字符串返回信息
【发布时间】:2016-05-12 12:24:11
【问题描述】:

return poker_hand(list_of_five_cards) 返回类似这样的字符串:

**4-Diamonds/2-Clubs/5-Hearts/4-Spades/King-Spades (One pair.)

我已经创建了一个字符串,我想要括号内的信息。在这方面我已经尝试过:

s = str(poker_hand(one_man))
print s
the_search = re.search(r"\((\w+)\)", s)

当您输入 print the_search 时,这将返回 None。我也试过了

s[s.find("(")+1:s.find(')')]
print s

返回整个字符串。有谁知道我做错了什么?

编辑对不起我应该更好的混乱,

输入是7-Spades/4-Clubs/3-Diamonds/3-Hearts/8-Spades (One pair.) 所需的输出是One pair

正在分配...现在尝试分配,将发布结果

【问题讨论】:

  • 在你的第二个 sn-p 中,你实际上并没有将切片的结果分配给任何东西。
  • 请发布输入和所需输出的清晰示例。
  • 真的不清楚。试试re.findall(r'\(([^()]*)\)', s)
  • 如果print(s[s.find("(")+1:s.find(')')])不起作用,你需要确保你有一个包含(和)的字符串。

标签: python regex string


【解决方案1】:

您用于查找括号中项目的模式不正确。
您可以尝试在http://regexr.com/ 中测试您的正则表达式

import re
s = '**4-Diamonds/2-Clubs/5-Hearts/4-Spades/King-Spades (One pair.)'
pattern = r'\(.+\.\)'
for item in re.findall(pattern,s):
  print item.strip('().')


output:
One pair

【讨论】:

    【解决方案2】:

    IIUC 在字符串的末尾总是有右括号。然后试试这个:

    '**4-Diamonds/2-Clubs/5-Hearts/4-Spades/King-Spades (One pair.)'.split('(')[1][:-1]
    Out[1]: 'One pair.'
    

    这个想法是用左括号分割,取后面的内容,然后删除右括号。

    【讨论】:

      【解决方案3】:

      输入是7-Spades/4-Clubs/3-Diamonds/3-Hearts/8-Spades (One pair.) 所需的输出是One pair

      你可以使用类似的东西:

      import re
      string = "7-Spades/4-Clubs/3-Diamonds/3-Hearts/8-Spades (One pair.)"
      result = re.findall(r"\((.*?)\.?\)", string )
      print result[0]
      

      Ideone Demo


      正则表达式解释:

      \((.*?)\.?\)
      
      Match the character “(” literally «\(»
      Match the regex below and capture its match into backreference number 1 «(.*?)»
         Match any single character that is NOT a line break character (line feed) «.*?»
            Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
      Match the character “.” literally «\.?»
         Between zero and one times, as many times as possible, giving back as needed (greedy) «?»
      Match the character “)” literally «\)»
      

      【讨论】:

      • 非常感谢您的解释!这将是我无限期使用的东西
      • 欢迎您,如果我的回答对您有帮助,请给1+并标记为正确答案,谢谢!
      【解决方案4】:

      使用组:

          import re
          s = '**4-Diamonds/2-Clubs/5-Hearts/4-Spades/King-Spades (One pair.)'
          print (s)
          m = re.search(r'\(([\s\S]+)\.\)', s)
          print(m.group(1))
      

      【讨论】:

        猜你喜欢
        • 2012-09-06
        • 1970-01-01
        • 2018-12-01
        • 1970-01-01
        • 2021-12-13
        • 1970-01-01
        • 1970-01-01
        • 2015-01-25
        • 1970-01-01
        相关资源
        最近更新 更多