导入.txt文件时将字符串转换为int

时间:2018-12-06 12:38:47

标签: python matplotlib

我正在关注YouTube上的本教程:https://www.youtube.com/watch?v=QyhqzaMiFxk&index=7&list=PLQVvvaa0QuDfefDfXb9Yf0la1fPDKluPF

目的是将.txt文件导入Phyton,并使用其数据在matplotlib中绘制图形。在此之前要做的一件事是将字符串转换为整数/浮点数。

下面是我的代码:

import matplotlib.pyplot as plt
import csv

x = []
y = []

with open('ages.txt', 'r') as csvfile:
    plots = csv.reader(csvfile, delimiter = ',')
    for row in plots:
        x.append(int(row[0]))
        y.append(int(row[1]))
plt.plot(x,y)
plt.show()

但是,我无法在视频中得到结果。下面是错误消息:

    x.append(int(row[0]))
ValueError: invalid literal for int() with base 10: '{\\rtf1\\ansi\\ansicpg1252\\cocoartf1504\\cocoasubrtf830'

我的.txt文件如下

1,56
2,27
3,65
4,44
5,38
6,97
7,56
8,35
9,64
10,12

我的代码有问题吗?

2 个答案:

答案 0 :(得分:1)

如果将文本文件另存为纯文本文件(纯文本),而不是RTF,则代码可以正常工作。

RTF文件包含用于文本布局和格式的额外数据,这导致您的代码在读取每一行时吸收了额外的元数据。

有些库支持RTF文件的文本提取,例如textract,但是将文本文件另存为纯文本可能更容易。

答案 1 :(得分:0)

如果将文件另存为纯文本,则代码似乎可以正常工作。但是,您可以做一些更简单的事情:

values = np.loadtxt('ages.txt', delimiter=',', dtype=int)
plt.plot(*values.T)