evt*_*toh 4 python csv variable-assignment
我正在编写一个通用程序来读取和绘制来自.txt文件的大量数据.每个文件都有不同的列数.我知道每个文件都有8列我不感兴趣,所以我可以通过这种方式找出相关列的数量.如何读取数据并将每个相关列的数据分类到单独的变量中?
这是我到目前为止:
datafile = 'plotspecies.txt'
with open(datafile) as file:
reader = csv.reader(file, delimiter=' ', skipinitialspace=True)
first_row = next(reader)
num_cols = len(first_row)
rows = csv.reader(file, delimiter = ' ', quotechar = '"')
data = [data for data in rows]
num_species = num_cols - 8
Run Code Online (Sandbox Code Playgroud)
我见过有人说大熊猫对这类事情有好处,但我似乎无法导入它.我更喜欢没有它的解决方案.
事实上,熊猫是正确的解决方案.问题在于,为了能够稳健地处理您不确定底层结构的东西,需要注意很多边缘情况,并且试图将其装入csv模块中是令人头疼的问题(尽管可以办到)
至于为什么你不能导入pandas的原因是它python默认没有附带.在学习语言时要考虑的最重要的事情之一是它允许您访问的包的生态系统.Python恰好是这方面最好的之一,所以忽略那些不属于标准python的东西就是忽略语言的最佳部分.
如果你在Windows环境中,你应该从conda设置开始.这将允许您以极少的开销无缝地探索python用户可用的许多软件包.这包括pandas,这实际上是处理此问题的正确方法.有关安装conda的更多信息,请参阅此链接:http://conda.pydata.org/docs/install/quick.html
一旦pandas安装完毕,它就像这样简单:
import pandas
test = pandas.read_csv(<your_file>)
your_Variable = test[<column_header>]
Run Code Online (Sandbox Code Playgroud)
很简单.
如果你真的,真的不想使用不在核心python中的东西那么你可以用下面的东西来做这件事,但是你还没有给出足够详细的实际解决方案:
def col_var(input_file, delimiter):
# get each line into a variable
rows = open(input_file).read().splitlines()
# split each row into entries
split_rows = [row.split(delimiter) for row in rows]
# Re-orient your list
columns = zip(*split_rows)
Run Code Online (Sandbox Code Playgroud)
最不直观的部分是最后一行,所以这里有一个小例子向您展示它是如何工作的:
>>> test = [[1,2], [3,4]]
>>> zip(*test)
[(1, 3), (2, 4)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14807 次 |
| 最近记录: |