>source

문자열을 함수에 입력하고 그 안에있는 정수를 가져 와서 숫자를 다른 표현식과 비교하고 싶습니다. 많이 검색했지만 일부는 작동하지 않거나 나에게 제공하지 않습니다 : [ '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!"}

예상 결과는 "Red Card 10"에서 나온 것입니다. 데이터 유형이 정수인 10 개만 원합니다.


  • 답변 # 1

    re.search 사용

    예 :

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

  • 답변 # 2

    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
    
    

관련 자료

  • 이전 java - STB 만 켜면 Android WebView가 너무 느리게 진행됩니다
  • 다음 c++ - 동적 객체 배열을 섞는 템플릿 만들기