使用Numpy查找文件的特定行

时间:2018-12-27 04:05:09

标签: python python-3.x numpy

我正在使用matplotlib从包含文本和数字的文件中制作信息来制作重量图。数字是两行,其中包含权重和日期。该文件如下所示:

1. anonymous 
2. anonymous
3. 
4. 34, 76
5. 12202018, 12222018

我想使用numpy获取权重(第3行)和日期(第4行),但是我无法找到一种方法来仅检索一行以在matplotlib中进行绘制。

我曾尝试使用csv来完成此操作,但是它不起作用,因为当您创建仅检索一行的列表时,就无法在列表中绘制该行。我的代码是:

import matplotlib.pyplot as plt
import csv

x = []
y = []

with 
open('example.txt') as csvfile:
    readCSV = list(csv.reader(csvfile, delimiter = ','))
    row3 = readCSV[3]

    for row in row3:
        x.append(int(row[0]))
        y.append(int(row[1]))

plt.plot(x, y)

plt.xlabel('x')
plt.ylabel('y')
plt.title("Weight Chart")
plt.legend()
plt.show()

产生的错误:

row3 = int(readCSV[3])
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

只需要澄清一下:

我想使用numpy检索文件的一行(以','表示),用作matplotlib的x和y轴。

非常感谢!

1 个答案:

答案 0 :(得分:0)

这将从文件中获取值到您的数组中

def process(line):
    line = line.rstrip()
    line = line.split('.')[1]
    line = line.split(',')
    return line

x = list()
y = list()
counter = 0
with open('example.txt') as data_file:
    for line in data_file:
        if (counter == 3) or (counter == 4):
            result = process(line)
            x.append(int(result[0]))
            y.append(int(result[1]))
        counter += 1

print x
print y