在Python中读取文件
我需要通过读取一个文件来找出一行中的最大值和最小值,然后用最大值除以最小值。我想用Python来实现这个功能。
文件(file.txt)的内容大概是这样的……
A28102_at,151,263,88,484,118,270,458,872,62,194
AB000114_at,72,21,20,61,20,85,20,25,20,65
AB000115_at,281,250,358,118,197,71,168,296,198,113
我遇到的问题是,我需要忽略第一个值,也就是在第一个逗号之前的部分,但我不知道该怎么做。另外,我还想把这些值存储在一个数组里,然后进行比较。这样的方法可以吗?或者有没有更好的方法推荐?
3 个回答
3
我不确定这样做是不是最“符合Python风格”的方法,但应该是可以的。我用的是列表,而不是数组。
for line in fp:
tokens = line.split(',') # tokenize the line with comma as the only delimiter
numbers = map(int, tokens[1:]) # skip the first value and convert to integer values
maxValue = max(numbers) # max() operates on lists or sequences, I can't recall
minValue = min(numbers) # so does min()
print maxValue / minValue # TADA
:
4
因为你是初学者,我不会给你直接可以复制粘贴的代码片段;如果你自己去弄明白细节,会学到更多东西。不过我可以告诉你可以怎么做:
- 用循环一行一行地读取文件,把当前行存储在一个字符串里
- 对每一行,用逗号把字符串分开,这样就得到了一个列表
- 把列表中的第一个元素去掉
- 从剩下的元素中找出最大的一个
也许其他人会给出实际的代码。
6
Python自带很多好用的工具!你可以用csv模块来处理csv文件:
#!/usr/bin/env python
import csv
csvobj=csv.reader(open('file.txt','r'))
for datum in csvobj:
datum=[float(val) for val in datum[1:]]
print(datum)
maximum=max(datum)
minimum=min(datum)
print(maximum/minimum)
# [151.0, 263.0, 88.0, 484.0, 118.0, 270.0, 458.0, 872.0, 62.0, 194.0]
# 14.064516129
# [72.0, 21.0, 20.0, 61.0, 20.0, 85.0, 20.0, 25.0, 20.0, 65.0]
# 4.25
# [281.0, 250.0, 358.0, 118.0, 197.0, 71.0, 168.0, 296.0, 198.0, 113.0]
# 5.04225352113