python小于号错误_OverflowError:在python中解析日期时,有符号整数大于最大值

尝试分析数字格式的日期时:s ="2506181306"

使用适当的日期格式:DateFormat = '%d%m%H%M%S'

dateutil.parser.parse(s).strftime(DateFormat)

最后出现一个“大于最大值的整数”错误:In [15]: dateutil.parser.parse(s).strftime(DateFormat)

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

OverflowError Traceback (most recent call last)

in ()

----> 1 dateutil.parser.parse(s).strftime(DateFormat)

/usr/local/lib/python2.7/site-packages/dateutil/parser.pyc in parse(timestr, parserinfo, **kwargs)

1006 return parser(parserinfo).parse(timestr, **kwargs)

1007 else:

-> 1008 return DEFAULTPARSER.parse(timestr, **kwargs)

1009

1010

/usr/local/lib/python2.7/site-packages/dateutil/parser.pyc in parse(self, timestr, default, ignoretz, tzinfos, **kwargs)

402 repl[attr] = value

403

--> 404 ret = default.replace(**repl)

405

406 if res.weekday is not None and not res.day:

OverflowError: signed integer is greater than maximum

那么,解析这个日期的正确方法是什么呢?“大于最大值”是指日期内的单个字段还是指整个字符串?

更新Jakob提供了正确的方法In [21]: from datetime import datetime

In [22]: datetime.strptime(s,DateFormat)

Out[22]: datetime.datetime(1900, 6, 25, 18, 13, 6)

这个错误通常是因为 Python 整数太大,超出了 C 语言的 long 类型的范围。出现这个错误的原因可能是你在进行大数运算,例如计算超出了 64 位整数的范围。 如果你遇到这个问题,有以下几种解决方法: 1. 使用 Python 的 Decimal 类型。Decimal 类型允许你使用任意精度的数字,可以处理非常大的整数。例如: ```python from decimal import Decimal x = Decimal('10000000000000000000000000000000000000000000000000000000000000000000000000000000000000') y = Decimal('10000000000000000000000000000000000000000000000000000000000000000000000000000000000001') z = x + y print(z) ``` 这将输出结果 `20000000000000000000000000000000000000000000000000000000000000000000000000000000000001`,不会遇到 `OverflowError` 错误。 2. 使用 Python 的第三方库 numpy。numpy 提供了一种称为 bigint 的特殊数据类型,可以处理比 Python 整数更大的整数。例如: ```python import numpy as np x = np.array([10000000000000000000000000000000000000000000000000000000000000000000000000000000000000], dtype=np.int64) y = np.array([10000000000000000000000000000000000000000000000000000000000000000000000000000000000001], dtype=np.int64) z = x + y print(z) ``` 这将输出结果 `[20000000000000000000000000000000000000000000000000000000000000000000000000000000000001]`,不会遇到 `OverflowError` 错误。 3. 如果你不需要处理超过 64 位的整数,可以使用 Python 的长整型类型 long。long 类型可以处理任意大小的整数,但是速度可能会比较慢。例如: ```python x = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000 y = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000001 z = long(x) + long(y) print(z) ``` 这将输出结果 `20000000000000000000000000000000000000000000000000000000000000000000000000000000000001`,不会遇到 `OverflowError` 错误。 希望这些解决方法能帮助你解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值