하하하호호호
272
2020-10-13 13:45:16 작성 2020-10-13 15:02:55 수정됨
5
153

파이썬


예를들어

list = ["1","a","3","5","a","7","9","a","11"]

이렇게 있는데요

여기중에 숫자만 골라내고 싶은데 제가 생각나는건

-----------------------------------------------------------

list = ["1","a","3","5","a","7","9","a","11"]

list2 = []

for l in list:

    try:

        if(type(float(l))==float):

          list2.append(l)

    except :

        print('s')

print(list2)

----------------------------------------------------------

이런식으로 try 이용해서 float("문자") 이거 오류나는걸 넘기는건데요


바람직하지 못한 방법 같은데 이렇게 하는거 말고 뭐 있을까요??

0
  • 답변 5

  • Eleutherius
    580
    2020-10-13 13:49:27

    정규식을 사용하면 좋을듯 합니다.

  • shaffron
    4k
    2020-10-13 13:59:03

    string 타입의 객체에 isdecimal 이라는 메소드가 있습니다.

    http://www.w3big.com/ko/python/att-string-isdecimal.html

  • 하하하호호호
    272
    2020-10-13 14:06:53

    샤프론님 감사합니다

    그런데 이거 정수는 되는데 실수는 안되네요 ㅠㅠ

  • allinux
    1k
    2020-10-13 14:57:28

    알파벳이 아닌 것으로 추출해도 되겠지요.

    L = ["1","a","3","5","a","7","9","a","11", "1.1"]
    list(filter(lambda c:not c.isalpha(), L))
    ['1', '3', '5', '7', '9', '11', '1.1']
    
    list(filter(str.isdecimal, L))  # 정수만
    ['1', '3', '5', '7', '9', '11']


  • Eleutherius
    580
    2020-10-13 15:25:21


    import re
    
    p=re.compile('^([\d]+\.){0,1}[\d]+$')
    
    print(p.match('123z123.'))
    print(p.match('aaaa'))
    print(p.match('123'))
    print(p.match('23.221'))
    print(p.match('53253'))
    print(p.match('123123.'))
    print(p.match('.123123'))
    


  • 로그인을 하시면 답변 을 등록할 수 있습니다.