如何从函数的字符串中提取整数?

时间:2019-05-28 07:56:27

标签: python

我想将一个字符串输入到函数中并获取其中的整数以将数字与另一个表达式进行比较。我搜索了很多东西,但有些不起作用或不给我这个:['6']。我无法将其与数字进行比较,因此无法正常工作。请帮忙。

{def numberC(card):
#numbers = []
#numbers.append(re.findall(\-?\d+, card))
#nums = re.compile(r"[+-]?\d+(?:\.\d+)?")
print(re.findall("\-?\d+", card))
return re.findall("\-?\d+", card)}

那是我做的功能不起作用。

其中输入的字符串看起来像“ Red Card 10”。

然后我用它来比较它们作为纸牌战。

{elif(card1 == card2):
    if(numberC(card1) < numberC(card2)):
        return "Player 2 is the Winner!"
    else:
        return "Player 1 is the Winner!"}

预期结果是来自“红牌10”,我只希望10的数据类型为整数。

2 个答案:

答案 0 :(得分:0)

使用re.search

例如:

def numberC(card):
    return re.search("\-?(\d+)", card).group(1)

答案 1 :(得分:0)

您需要处理特殊的卡片盒,例如Ace,Jack,Queen,King和Joker(也许)。随时更改其值:

import re

SPECIAL_CARDS = {
  "ace": 1,
  "jack": 11,
  "queen": 12,
  "king": 13,
  "joker": 20
}

def numberC(card):
  card = card.lower()
  special = set(SPECIAL_CARDS) & set(card.split())
  if special:
    return SPECIAL_CARDS[special.pop()]
  result = re.search("\d+", card)
  if not result:
    return 0
  return int(result.group())

print(numberC("Red Card 10"))
print(numberC("10 Red Card"))
print(numberC("Ace Red Card"))
print(numberC("Black Jack Card"))
print(numberC("I am not a card"))

返回:

10
10
1
11
0