我可以拆分没有空格的输入吗?

Can I split an input that doesnt have spaces?

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

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

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

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

将其转换为列表:

$ 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']

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

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]

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

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

这也适用于更多 "normal" 输入:

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