簡體   English   中英

將文件讀入字典並處理數據

[英]Read file into dictionary and manipulate data

如果某些值超出我選擇的數量,我嘗試讀取文本文件並從中刪除某些行。

這是一個保存地圖的文本文件,我需要操縱第三列中的值。 然后將新地圖寫入另一個文件(或編輯同一文件)。 請注意,這些值的長度為3-4個字符。

地圖是這樣的(相關值以粗體顯示)

1 979 999 514 383 117 117 95 1

1 979 1000 514 383 117 95 95

我設法編寫了一個干凈的短代碼來讀取文件。 這是我到目前為止所擁有的:

List = []
for line in open('textFile.txt','r').readlines():
    List.append(line.strip())
    print(line)

現在,我需要一種方法來識別每行上的相關值並設置一個條件來保存該操作(在這種情況下刪除值)。

我試圖將特定行中的某個范圍作為一個數組與整數進行比較,但這沒有用。

我還嘗試將所有內容放在一個字符串中並設置一個指數循環,該循環將刪除[6]到[10]范圍內的每個字符(呈指數增長),但事實證明這對我來說太復雜了。

有人可以幫我嗎?

我會將數據讀入列表列表:

with open('testFile.txt') as fin:
    data = [line.split() for line in fin]

現在,您可以在第三列中處理數據:

for line in data:
    print line[2] #prints the values in the third column

並將其寫回-在這里,我將其寫到另一個文件中,但可以將其寫回到輸入文件中:

with open('testFile_out.txt','w') as fout:
    for line in data:
        fout.write(' '.join(line)+'\n') 

一個示例,其中不包括第三列大於1000的記錄就地更新文件的示例:

import fileinput

for line in fileinput.input('yourfile', inplace=True):
    cols = line.split()
    if int(cols[2]) > 1000:
        continue
    print line,

從外觀上,您可以簡單地拆分字符串 ,操縱值,然后將其重新組合在一起。 所以舉個例子

List = []
for line in open('textFile.txt','r').readlines():
    tl = line.split(' ')
    tl[2] += 1
    List.append(' '.join(tl))

實際上,無需對一組數據進行多次迭代,如果需要更清晰的代碼,只需將其分解為函數即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM