복붙노트

[PYTHON] 십진수 표 변환

PYTHON

십진수 표 변환

파이썬으로 읽으려는 데이터 읽기 기능이있는 CSV 파일이 있습니다. "2,5"와 같은 문자열을 포함하는 목록을 얻습니다. float ( "2,5")는 소수점이 잘못 표시되어 작동하지 않습니다.

이것을 파이썬으로 2.5로 어떻게 읽습니까?

해결법

  1. ==============================

    1.float ( "2,5".replace ( ',', '.')) 대부분의 경우에 사용됩니다.

    float ( "2,5".replace ( ',', '.')) 대부분의 경우에 사용됩니다.

    값이 크고 수천 명이 사용 된 경우 다음을 수행 할 수 있습니다.

    모든 쉼표를 점으로 바꿉니다 : value.replace ( ",", ".")

    마지막 점을 제외한 모두 제거 : value.replace ( ".", "", value.count ( ".") -1)

  2. ==============================

    2.로케일 인식 방식으로 할 수 있습니다.

    로케일 인식 방식으로 할 수 있습니다.

    import locale
    
    # Set to users preferred locale:
    locale.setlocale(locale.LC_ALL, '')
    # Or a specific locale:
    locale.setlocale(locale.LC_NUMERIC, "en_DK.UTF-8")
    
    print locale.atof("3,14")
    

    이 방법을 사용하기 전에이 절을 읽으십시오.

  3. ==============================

    3.팬더는 이것을 즉시 사용할 수 있습니다.

    팬더는 이것을 즉시 사용할 수 있습니다.

    df = pd.read_csv(r'data.csv', decimal=',')
    

    http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html을 참조하십시오.

  4. ==============================

    4.정규식을 사용하면 더 신뢰할 수 있습니다.

    정규식을 사용하면 더 신뢰할 수 있습니다.

    import re
    
    decmark_reg = re.compile('(?<=\d),(?=\d)')
    
    ss = 'abc , 2,5 def ,5,88 or (2,5, 8,12, 8945,3 )'
    
    print ss
    print decmark_reg.sub('.',ss)
    

    결과

    abc , 2,5 def ,5,88 or (2,5, 8,12, 8945,3 )
    abc , 2.5 def ,5.88 or (2.5, 8.12, 8945.3 )
    

    더 복잡한 경우 (예를 들어 소수점 앞에 숫자가없는 숫자)를 처리하려면 다음 스레드에서 모든 유형의 숫자를 검색하도록 만든 정규식을 사용하는 것이 좋습니다.

    stackoverflow.com/questions/5917082/regular-expression-to-match-numbers-with-or-without-commas-and-decimals-in-text/5929469

  5. ==============================

    5.10 진수 쉼표를 모두 소수점으로 바꾸십시오.

    10 진수 쉼표를 모두 소수점으로 바꾸십시오.

    floatAsStr = "2,5"
    floatAsStr = floatAsStr.replace(",", ".");
    myFloat = float(floatAsStr)
    

    물론이 함수는 파이썬이 char과 string을 구별하기 때문에 모든 부분 문자열에 대한 작업을 대체합니다.

  6. from https://stackoverflow.com/questions/7106417/convert-decimal-mark by cc-by-sa and MIT license