【问题标题】:eval() on a string, causes "SyntaxError: unexpected EOF while parsing"字符串上的 eval() 导致“语法错误:解析时意外 EOF”
【发布时间】:2015-06-23 08:30:28
【问题描述】:

我正在使用不是我编写的 python 程序逐行读取文本文件,我发现了一个错误“SyntaxError: unexpected EOF while parsing”,我在一个数字字符串上将其缩小到eval()

文件如下:

0,0.0,1,12,2,36,1
422189799,166217249.0,1,12,2,36,1

代码如下:

istream = fopen(fin, 'r')
for line in istream.readlines():
    for v in line.replace('\n', '').split(','):
        print v
        eval(v)

错误看起来像:

    eval(v)
  File "<string>", line 1
    1
    ^
SyntaxError: unexpected EOF while parsing

发生在第一行的最后一个字段1

我想知道问题是什么?谢谢。

【问题讨论】:

  • 你期望通过评估一个数字序列会发生什么?
  • 我猜 eval() 将数字字符串转换为适当的数字类型。程序不是我写的。
  • 只需删除该行。因为它不存储结果,所以它除了在无法计算表达式时抛出错误之外什么都不做。
  • 这至少可以说很奇怪......
  • 行尾出现神秘行为的常见罪魁祸首是 DOS 回车。请参阅bash tag wiki 了解一些故障排除提示。

标签: python python-2.6


【解决方案1】:
 > for v in line.replace('\n', '')...

为了使代码对不同的行尾约定具有鲁棒性,您可能需要

for v in line.rstrip('\r\n')...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多