【问题标题】:Error in using int() when importing data from .rtf file从 .rtf 文件导入数据时使用 int() 出错
【发布时间】:2019-05-21 01:41:01
【问题描述】:

我是编码新手,可能在这里遗漏了一些东西。我正在尝试导入 .rtf 文件,但 x.append(int(row[0])) 处的代码错误并显示以下消息:

ValueError: invalid literal for int() with base 10: 

这是我的代码:

with open('example.rtf', 'r') as csvfile:
    plots = csv.reader(csvfile, delimiter = ',')
    for row in plots: 
        x.append(int(row[0]))
        y.append(int(row[1]))

作为参考,这是我的数据: 1,5 2,3 3,4 4,7 5,4 6,3 7,5 8,7 9,4 10,4

【问题讨论】:

  • 在尝试获取row[1]时,空字符串可能会产生array index out of range
  • 您正尝试将rtf 文件作为csv 文件打开。那可能会失败。我不知道是否有任何rtf 读者可以使用 python。但一般来说,您希望将数据存储在 ascii 文件中。

标签: python csv matplotlib


【解决方案1】:

打开记事本并粘贴您的 csv 文件数据。就像你提到的那样:

1,5 2,3 3,4 4,7 5,4 6,3 7,5 8,7 9,4 10,4

并将其保存为 filename.rtf

并简单地运行您的代码

没关系,错误是因为当我们在某些应用程序中打开文件并在进行一些编辑后尝试保存它时,应用程序有时会要求提供文本格式选项,从而对您的数据进行一些更改。

【讨论】:

    【解决方案2】:

    在您的代码中添加一些错误报告,您将得到原因:

    with open('example.rtf', 'r') as csvfile:
        plots = csv.reader(csvfile, delimiter = ',')
        for row in plots:
            try:
                x.append(int(row[0]))
                y.append(int(row[1]))
            except ValueError as ex:
                print ('Oh, NO!! This line is bad: {} - {}'.format(row, ex))
    

    【讨论】:

    • 这给了我同样的理由
    • 但是信息是什么?让我们看看row 的内容 - 现在应该打印出来了
    • 正如问题下方评论的那样,没有“单行”是不好的,而是完整的文件格式。将其与使用文本编辑器打开 png 图像进行比较。
    猜你喜欢
    • 2016-10-15
    • 2018-11-03
    • 1970-01-01
    • 2018-06-21
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多