用Python处理制表符分隔的数据
首先得说,我对Python非常陌生,水平也很差,但我相信学会它总是值得的。
我遇到的问题是,我有一个设备,它会把数据打印到一个.txt文件里,但数据是用制表符(也就是\t)分隔的,而不是用逗号。比如说:50\t50\t66\t0\t4...
我想做的就是用这些数据画一个简单的直方图。我知道这应该是最简单的事情,但不知怎么的,我在从我的Python入门课程中找不到解决办法,也无法用合适的词语在网上搜索到相关信息。
import matplotlib.pyplot as plt
#import numpy as np
d = open('.txt', 'r')
d.read()
plt.hist(d)
plt.show()
顺便说一下,numpy只是我之前练习时用到的一个库。
3 个回答
0
如果你学习了csv文件的处理,你可以把文件的分隔符设置为'\t',这只是其中一个选项。这样的话,程序就会把分隔符从默认的','(逗号)改成'\t'(制表符)。你学习的所有用逗号作为分隔符的例子,处理方式都是一样的。
1
别担心,大家都是从零开始的。你走在正确的道路上,Python确实是一个很好的学习语言。有很多方法可以做到这一点,这里有一种方式。按照这个例子的写法,它会为文件中的每一行生成一个直方图。你可以根据需要修改或改变这个行为。
请注意,CSV模块会通过在读取器的构造函数中传入quoting=csv.QUOTE_NONNUMERIC来处理文件中的数据,将其转换为浮点数。这可能是处理CSV或TSV文件中数字转换的最佳方法。
import csv
import matplotlib.pyplot as plt
data_file = open('testme.txt')
tsv_reader = csv.reader(data_file, delimiter='\t',
quoting=csv.QUOTE_NONNUMERIC)
for row in tsv_reader:
plt.hist(row)
plt.show()
我省略了一些内容,比如正确的异常处理,以及使用上下文管理器来打开文件,这些都是最佳实践,并在CSV模块文档中有示范。
一旦你对这门语言了解得更多,我建议你深入研究这些主题。