2016-09-20 18 views
1

文件看起來是這樣的:如何找到文件中人數最多的,看到這行是

1, a b 
2, c d 
3, e f 

我當前的代碼

b = open('file.txt', 'r') 

c = b.readlines() 
regels = len(c) 

print(regels) 

我行的數字,但仍需要最大號碼+在哪一行上。

+0

所以第一列是行號,接下來的兩個是數字?你只想找到文件返回行號中最大的單個數字? – MooingRawr

+0

@MooingRawr,這是正確的。找到最大的數字,並告訴它是在哪一行。 –

回答

0

所以你只是想找到文件第一列中最大的數字?這將有助於在逗號

  • 的基礎

    b = open('file.txt', 'r') 
    
    c = b.readlines() 
    regels = len(c) 
    
    print(regels) 
    
    max = 0 
    for line in b.readlines(): 
        num = int(line.split(",")[0]) 
        if (max < num): 
        max = num 
    
    
    print(max) 
    # Close file 
    b.close() 
    
  • +0

    那麼它不會讀取數據作爲一個字符串?在這種情況下,一旦你通過第9行,'num = int(line [0])'不起作用? – roganjosh

    +0

    您忘記關閉文件。 – reticentroot

    +0

    感謝@reticentroot,我認爲for循環應該適用於文件中的所有行,但如果我錯了,請糾正。 – Alastair

    0
    • 讀線
    • 拆分其追加第一個元素的臨時名單。

    一旦完成文件的讀取完成後,

    • 爲了獲得最大的號碼,只需使用臨時名單上max功能。
    • 由於文件是逐行順序讀取的,並且將行號附加到臨時列表中,爲了獲取其中存在最大數目的行號,只需找到臨時列表中的最大號的索引,並且在列表索引開始後將其增加1與零。

    P.S:檢查最後三個報表打印

    代碼:

    num_list = [] 
    with open('master.csv','r')as fh: 
        for line in fh.readlines(): 
         num_list.append(int((line.split(','))[0])) 
    
    print num_list 
    print "Max number is -" ,max(num_list) 
    print "Line number is - ", (num_list.index(max(num_list)))+1 
    

    輸出:

    C:\Users\dinesh_pundkar\Desktop>python c.py 
    [1, 2, 3] 
    Max number is - 3 
    Line number is - 3 
    
    C:\Users\dinesh_pundkar\Desktop> 
    
    +0

    它的工作原理和謝謝,但我仍然有一個問題。我怎樣才能獲得最大數量的線?你的代碼的第4行是如何工作的?因爲你只分解它,它是如何找到最大數量的? –

    +0

    在第4行,我沒有得到最大數量。在第4行,正如我在回答中提到的,我只是在逗號的基礎上分割行,並將第一個元素附加到臨時列表。 –

    +0

    一旦我完成了線條,然後我使用max函數從列表中獲取最大數量。 ---- max(num_list) –

    -1

    迭代通過文件和跟蹤的您見過的最高號碼以及您找到的線路。當你看到一個更大的號碼時,只需用新號碼和新號碼替換它。

    b = open('file.txt', 'r') 
    max = -1 
    lineNum = -1 
    line = b.readline() 
    index = 0 
    while(line): 
        index+=1 
        newNum = line[0] 
        if(newNum>max): 
         max = newNum 
         lineNum = index 
        line = b.readline() 
    print lineNum,max,index 
    

    max是你的最高數,LINENUM是它在哪裏,和索引是行的文件

    +0

    這是無效的Python。你測試過了嗎? – roganjosh

    +0

    我在while語句中忘記了readline。除此之外,它適用於Python2.7,如果您願意,可以很容易地轉換爲Python3。 – SilentLupin

    0

    在數我這是怎麼會去這樣做。

    max_num = 0 
    with open('file.txt', 'r') as data: # use the with context so that the file closes gracefully 
        for line in data.readlines(): # read the lines as a generator to be nice to my memory 
        try: 
         val = int(line.split(",")[0]) 
        except ValueError: # just incase the text file is not formatted like your example 
         val = 0 
        if val > max_num: # logic 
         max_num = val 
    
    print max_num #result 
    
    0

    您需要遍歷文件中的每一行,解析每一行並找到最大的數字。

    我不太瞭解數字是如何存儲在您的文件中的。假設在每行中,第一個字段是數字的,並且與其他人(非數字)分開','。我假設所有的數字都是整數。

    ln = 0 
    maxln = 0 
    maxn = 0 
    with open(filename, 'r') as f: 
        line = f.next() 
        if line: 
         ln = 1 
         maxln = 1 
         maxn = int(line.split(",")[0].strip()) 
        else: 
         raise Exception('Empty content') 
        for line in f: 
         ln += 1 
         cur = int(line.split(",")[0].strip()) 
         if cur > maxn: 
          maxn = cur 
          maxln = ln 
    

    LN用於記錄當前行號,MAXN用於記錄當前最大數目,並且maxln用於記錄當前最大數目的位置。

    你需要做的一件事是獲取第一行來初始化這些變量。

    0

    的答案都不給你最大數量的線,所以我會發布一些簡單的代碼,後來改進

    max_num = 0 
    line_count = 0 
    with open('file.txt', 'r') as infile: 
        for line in infile: 
         number = int(line.split(',')[0]) 
         if number > max_num: 
          max_num = number 
          line_num = line_count 
         line_count += 1 
    print (max_num) 
    print (line_num) 
    
    +0

    非常感謝!該行不正確,但我想我可以解決這個問題。我仍然想知道你的第五條線究竟做了什麼。它在''分割線,但是它如何得到最高的數字? –

    +0

    @SamVruggink你能告訴我什麼是不正確的嗎?在你的示例代碼中,數字出現在「,」的左側,所以我只是取這個值,並試圖記錄最大值 – roganjosh

    +0

    @SamVruggink它通過比較存儲在'max_num'中的值來獲得最大值。如果'number'的值超過'max_num',那麼'max_num'將採用'number'的值,'line_num'將記錄發生這種情況的行 – roganjosh

    相關問題