【问题标题】:Can I split an input that doesnt have spaces?我可以拆分没有空格的输入吗?
【发布时间】:2015-01-15 02:56:27
【问题描述】:

我正在尝试使用 python 创建一个与扑克相关的程序。 当有人输入"9H"时,有没有办法将9H分开?

【问题讨论】:

    标签: python string input split


    【解决方案1】:

    将字符串分解为单个字符的最简单方法是在其上调用list()

    >>> list("9H")
    ['9', 'H']
    >>>
    

    这将遍历字符串并将其字符收集到一个新的列表对象中。

    【讨论】:

      【解决方案2】:

      您可以使用其索引访问字符串中的每个单独字符,无需将输入转换为列表。如果只是两个字符,你总是可以这样做:

      card = '9H'
      number, suit = card[0], card[1]
      

      或者更简单,我们可以解包字符串中的元素:

      number, suit = card
      

      现在number 将包含字符串值'9' 并且suit 将等于'H'。不过要小心边缘情况——我们如何处理像'10S' 这样的卡片?有点笨拙,但我们可以使用正则表达式,这将适用于所有有效的卡片输入:

      import re
      card = '10S'
      number, suit = re.findall(r'(\d+)(\D)', card)[0]
      

      【讨论】:

      • number, suit = card 就够了。
      【解决方案3】:

      将其转换为列表:

      $ python
      Python 2.7.8 (default, Oct 30 2014, 18:30:15)
      >>> "example"[0]
      'e'
      >>> "example"[1]
      'x'
      >>> list("example")
      ['e', 'x', 'a', 'm', 'p', 'l', 'e']
      

      【讨论】:

        【解决方案4】:

        请注意,如果您期待像 10H 而不是 TH 这样的输入,那么所有这些答案都会很可怕。在这种情况下,我会考虑从其余部分中剥离最后一个标记(应该始终是代表西装的单个字符)并改为这样做。

        your_input = "10H"
        rank, suit = your_input[:-1], your_input[-1]
        

        这也适用于更多“正常”输入:

        rank, suit = "9H"[:-1], "9H"[-1]
        

        【讨论】:

          猜你喜欢
          • 2012-02-10
          • 1970-01-01
          • 1970-01-01
          • 2011-09-10
          • 2022-12-31
          • 1970-01-01
          • 2023-03-24
          • 2022-11-15
          • 1970-01-01
          相关资源
          最近更新 更多