Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ConfigNumParser ValueError:以10为基数的int()的文本无效:'';_Python_Parsing_Numpy_Scipy_Pyparsing - Fatal编程技术网

Python ConfigNumParser ValueError:以10为基数的int()的文本无效:'';

Python ConfigNumParser ValueError:以10为基数的int()的文本无效:'';,python,parsing,numpy,scipy,pyparsing,Python,Parsing,Numpy,Scipy,Pyparsing,这段代码几乎完全是从a输入的,我还没有注意到任何打字错误,所以可能代码是过时的?为什么这段代码正确地分析了数字,但在KeyWord()和QuotedString()方法上失败了 但是我得到了ValueError:以10为基数的int()的文本无效:“”,因此我添加了一个print语句来帮助调试,以下是终端会话: Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32 Type "

这段代码几乎完全是从a输入的,我还没有注意到任何打字错误,所以可能代码是过时的?为什么这段代码正确地分析了数字,但在KeyWord()和QuotedString()方法上失败了

但是我得到了ValueError:以10为基数的int()的文本无效:“”,因此我添加了一个print语句来帮助调试,以下是终端会话:

    Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ConfigNumParser as parser
>>> test2 = '''
...     1 2 3.0 0.3 .3 2e3 -.2e+2 +2.2256E-2
...     True False nan NAN None
...     "word" "two words"
...     """'more words', he daid"""
... '''
>>> print parser.pyvalue.searchString(test2)
Converting ['1']
Converting ['2']
Converting ['3.0']
Converting ['0.3']
Converting ['.3']
Converting ['2e3']
Converting ['-.2e+2']
Converting ['+2.2256E-2']
Converting ['']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\Lib\site-packages\pyparsing.py", line 1099, in searchString
    return ParseResults([ t for t,s,e in self.scanString( instring, maxMatches ) ])
  File "C:\Python27\Lib\site-packages\pyparsing.py", line 1036, in scanString
    nextLoc,tokens = parseFn( instring, preloc, callPreParse=False )
  File "C:\Python27\Lib\site-packages\pyparsing.py", line 871, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "C:\Python27\Lib\site-packages\pyparsing.py", line 2451, in parseImpl
    ret = e._parse( instring, loc, doActions )
  File "C:\Python27\Lib\site-packages\pyparsing.py", line 897, in _parseNoCache
    tokens = fn( instring, tokensStart, retTokens )
  File "C:\Python27\Lib\site-packages\pyparsing.py", line 660, in wrapper
    ret = func(*args[limit[0]:])
  File "ConfigNumParser.py", line 33, in convert_number
    return [int(t[0])]
ValueError: invalid literal for int() with base 10: ''
win32上的Python 2.7.3(默认值,2012年4月10日23:31:26)[MSC v.1500 32位(英特尔)] 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>将ConfigNumParser作为解析器导入 >>>test2='' ... 1 2 3.0 0.3.3 2 3-.2e+2+2.2256E-2 ... 真假难分 ... “两个字” ... “‘更多的话’,他说” ... ''' >>>打印parser.pyvalue.searchString(test2) 转换['1'] 转换['2'] 转换['3.0'] 转换['0.3'] 转换['.3'] 转换['2e3'] 转换['-.2e+2'] 转换['+2.2256E-2'] 转换[''] 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 searchString中的文件“C:\Python27\Lib\site packages\pyparsing.py”,第1099行 返回ParseResults([t代表self.scanString(instring,maxMatches)中的t、s、e)]) 扫描字符串中的文件“C:\Python27\Lib\site packages\pyparsing.py”,第1036行 nextLoc,tokens=parseFn(instring,preloc,callPreParse=False) 文件“C:\Python27\Lib\site packages\pyparsing.py”,第871行,在_parseNoCache中 loc,tokens=self.parseImpl(指令、预指令、动作) parseImpl中的文件“C:\Python27\Lib\site packages\pyparsing.py”,第2451行 ret=e._解析(指令、位置、动作) 文件“C:\Python27\Lib\site packages\pyparsing.py”,第897行,在_parseNoCache中 令牌=fn(instring、令牌start、retTokens) 包装器中的文件“C:\Python27\Lib\site packages\pyparsing.py”,第660行 ret=func(*参数[限制[0]:]) 文件“ConfigNumParser.py”,第33行,转换号 返回[int(t[0])] ValueError:基数为10的int()的文本无效:“” 因此,在这里搜索了几个建议之后,我添加了您在上面的评论区中看到的try-catch。现在的结果是:

 Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ConfigNumParser as parser
>>> test2 = '''
...     1 2 3.0 0.3 .3 2e3 -.2e+2 +2.2256E-2
...     True False nan NAN None
...     "word" "two words"
...     """'more words', he daid"""
... '''
>>> print parser.pyvalue.searchString(test2)
Converting ['1']
Converting ['2']
Converting ['3.0']
Converting ['0.3']
Converting ['.3']
Converting ['2e3']
Converting ['-.2e+2']
Converting ['+2.2256E-2']
Converting ['']
Converting ['']
Converting ['']
<deleted 65+ more of these>
Converting ['']
Converting ['']
Converting ['']
[[1], [2], [3.0], [0.3], [0.3], [2000.0], [-20.0], [0.022256], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], ['']]
>>>
win32上的Python 2.7.3(默认值,2012年4月10日23:31:26)[MSC v.1500 32位(英特尔)] 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>将ConfigNumParser作为解析器导入 >>>test2='' ... 1 2 3.0 0.3.3 2 3-.2e+2+2.2256E-2 ... 真假难分 ... “两个字” ... “‘更多的话’,他说” ... ''' >>>打印parser.pyvalue.searchString(test2) 转换['1'] 转换['2'] 转换['3.0'] 转换['0.3'] 转换['.3'] 转换['2e3'] 转换['-.2e+2'] 转换['+2.2256E-2'] 转换[''] 转换[''] 转换[''] 转换[''] 转换[''] 转换[''] [[1], [2], [3.0], [0.3], [0.3], [2000.0], [-20.0], [0.022256], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], ['']] >>> 在我继续搜索和学习的过程中,我认为将问题发布到专业版会对我和其他人有所帮助

问候,, 账单

我还没注意到任何打字错误

……哎呀

(?P<float2>\.\d+)?  
(?P\.\d+)?
应该是

(?P<float2>\.\d+)
(?P\.\d+)
这就解决了问题

(?P<float2>\.\d+)?  
(?P<float2>\.\d+)