을 떠 변환 : u는, '\ $ 9.02 u2212'-)파이썬은 유니 코드 빼기 기호 내가 HTML에서 구문 분석 문자열을
는 간단히 말해 플로트 (할 작동하지 않습니다 변환 ($ 9.02). 'decimal'코덱은 0 '위치의 문자'u2212 '를 인코딩 할 수 없습니다. 잘못된 10 진수 유니 코드 문자열입니다.
문자열에서 '\ u2212'을 (를) 감지하려고 시도했을 수 있습니다. 그렇다면 어떻게해야할까요?
어떻게하면 좋을까요?
을 떠 변환 : u는, '\ $ 9.02 u2212'-)파이썬은 유니 코드 빼기 기호 내가 HTML에서 구문 분석 문자열을
는 간단히 말해 플로트 (할 작동하지 않습니다 변환 ($ 9.02). 'decimal'코덱은 0 '위치의 문자'u2212 '를 인코딩 할 수 없습니다. 잘못된 10 진수 유니 코드 문자열입니다.
문자열에서 '\ u2212'을 (를) 감지하려고 시도했을 수 있습니다. 그렇다면 어떻게해야할까요?
어떻게하면 좋을까요?
당신은 달러 기호도 문제를 일으키는 것을
s = u'\u2212$9.02'
float(s.replace(u'\u2212', '-').replace('$', ''))
참고 할 수있다.
당신은 정규 표현식을 사용할 수 있습니다 (필요한 경우, 또는 작은)
import re
def currency_to_cents(s):
m = re.match(r"([−+]?)\$(\d+)(?:\.(\d+))?", s)
if m is None:
raise ValueError("{!r} is not correctly-formatted currency".format(s))
sign, dollars, cents = m.groups()
amount = int(dollars) * 100
if cents:
amount += int(cents)
if sign == "−":
amount = -amount
return amount
이 때문에 부동 소수점 오류의 센트 통화를 관리하는 것이 좋습니다.
통화의 경우 Decimal
모듈을 사용하는 것이 더 좋습니다. 수레를 다루는 대신
>>> from decimal import Decimal
>>> i = Decimal(s.replace(u'\u2212','-').replace('$',''))
>>> i
Decimal('-9.02')
왜 그런지 궁금하실 것입니다. 당신은 컴퓨터에서 수레의 근사치에 읽을 수 있지만, 실제적인 측면에서, 여기 진수가 더 의미 예입니다 : 10 진수 모듈에 대한
>>> 1.1 + 2.2
3.3000000000000003
>>> Decimal('1.1') + Decimal('2.2')
Decimal('3.3')
>>> 1.30 + 1.20
2.5
>>> Decimal('1.30') + Decimal('1.20')
Decimal('2.50')
위의 예와 다른 용도가 module documentation에서 찍은.