gpt4 book ai didi

Python 相当于 C strtod

转载 作者:太空狗 更新时间:2023-10-29 21:50:49 26 4
gpt4 key购买 nike

我正在将部分 C++ 程序转换为 Python,但我在替换 C 函数时遇到了一些问题 strtod .我正在处理的字符串由简单的数学方程式组成,例如“KM/1000.0”。问题是常量和数字混合在一起,因此我无法使用 float()。

如何编写 Python 函数来模拟 strtod,它返回转换后的数字和下一个字符的位置?

最佳答案

我不知道有任何现有功能可以做到这一点。

但是,使用正则表达式编写一个非常容易:

import re

# returns (float,endpos)
def strtod(s, pos):
m = re.match(r'[+-]?\d*[.]?\d*(?:[eE][+-]?\d+)?', s[pos:])
if m.group(0) == '': raise ValueError('bad float: %s' % s[pos:])
return float(m.group(0)), pos + m.end()

print strtod('(a+2.0)/1e-1', 3)
print strtod('(a+2.0)/1e-1', 8)

更好的整体方法可能是构建一个 lexical scanner这将首先标记表达式,然后使用一系列标记而不是直接使用字符串(或者确实全力以赴并构建一个 yacc 样式的解析器)。

关于Python 相当于 C strtod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7564899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com