用Python处理制表符分隔的数据

0 投票
3 回答
3716 浏览
提问于 2025-04-17 22:54

首先得说,我对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模块文档中有示范。

一旦你对这门语言了解得更多,我建议你深入研究这些主题。

0

将read()读取到的字符串结果赋值给一个变量s:

s = d.read()

split方法会把你的字符串s拆分成一个字符串列表:

s = s.split("\t")

map

s = map(float, s)

撰写回答