Преобразование строк в int при импорте файлов .txt - PullRequest
0 голосов
/ 06 декабря 2018

Я слежу за этим уроком с 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 голосов
/ 06 декабря 2018

Если вы сохраните ваш текстовый файл как обычный текстовый файл (обычный текст) вместо RTF, ваш код будет работать нормально.

RTF-файлы содержат дополнительные данные для текстового макета и формата, в результате чего ваш код выбирает дополнительные метаданные при чтении каждой строки.

Существуют библиотеки, которые поддерживают извлечение текста из файлов RTF, например, textract , но, вероятно, для начала проще сохранить текстовый файл в виде простого текста.

0 голосов
/ 06 декабря 2018

Если вы сохраните свой файл в виде простого текста, ваш код, похоже, будет работать.Однако вы можете сделать что-то попроще:

values = np.loadtxt('ages.txt', delimiter=',', dtype=int)
plt.plot(*values.T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...