代码之家  ›  专栏  ›  技术社区  ›  Krishna Chaitanya

从python中的文件读取

  •  0
  • Krishna Chaitanya  · 技术社区  · 16 年前

    我需要通过读取文件来找出一行中的最大值和最小值,并且应该将最大值除以最小值。我有兴趣在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 回复  |  直到 16 年前
        1
  •  6
  •   unutbu    16 年前

    巨蟒有电池!使用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
    
        2
  •  4
  •   Thomas    16 年前

    作为一个初学者,我不会给你一个复制/粘贴代码片段;如果你自己想清楚细节的话,还有更多的东西要学。但你可以这样做:

    • 在循环中逐行读取文件,将当前行存储在字符串中
    • 对于每一行,将字符串拆分为逗号,生成一个列表
    • 删除列表的第一个元素
    • 尽可能多地休息

    也许其他人会想出实际的代码。

        3
  •  3
  •   Michael F    16 年前

    我不确定这是否是最“蟒蛇”的方式,但它应该起作用。我用的是列表而不是数组。

    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
    

    :)