一部の行はタイムスタンプとの唯一の違いを伴って重複して発生するため、フィルタリングしたいデータ(。約5800行)ちょうど2時間後です。重複の後期バージョンである行(たとえば、添付されている例の最初の行など)は省略してください。その他の行はすべて、新しい.txtファイルに残して書き込む必要があります。私はこの1つを解決するように見えることはできません.txtファイルから重複を削除し、新しい.txtファイルを作成する
deleted
:
1_3_IMM 2016-07-19 16:11:56 00:00:40 2 Sensor Check # should go
1_3_IMM 2016-07-19 14:12:40 00:00:33 2 Sensor Check # should stay
1_3_IMM 2016-07-19 14:11:56 00:00:40 2 Sensor Check # should stay
1_3_IMM 2016-07-19 16:12:40 00:00:33 2 Sensor Check # should go
1_4_IMM 2016-07-19 17:23:25 00:00:20 2 Sensor Check # should stay
1_4_IMM 2016-07-19 19:23:25 00:00:20 2 Sensor Check # should go
1_4_IMM 2016-07-19 19:15:24 00:02:21 2 Sensor Check # should stay
1_4_IMM 2016-07-19 19:25:13 00:02:13 2 Sensor Check # should stay
私はPythonでいくつかのコードを書いて、出力はテキストのみの1行を持つ.txtファイルです。手伝ってくれますか?以下のコードを参照してください。
import os
def filter_file():
with open("output.txt", "w") as output:
#open the input file from a specified directory
directory = os.path.normpath("C:/Users/sande_000/Documents/Python files")
for subdir, dirs, files in os.walk(directory):
for file in files:
if file.startswith("input"):
input_file=open(os.path.join(subdir, file))
#iterate over each line of the file
for line in input_file:
machine = line[0:7] #stores machine number
date = line[8:18] #stores date stamp
time_1 = int(line[19:21]) #stores hour stamp
time_2 = int(line[22:24]) #stores minutes stamp
time_3 = int(line[25:27]) #stores second stamp
#check current line with other lines for duplicates by iterating over each line of the file
for otherline in input_file:
compare_machine = otherline[0:7]
compare_date = otherline[8:18]
compare_time_1 = int(otherline[19:21])+2
compare_time_2 = int(otherline[22:24])
compare_time_3 = int(otherline[25:27])
#check whether machine number & date/hour+2/minutes/seconds stamp are similar.
#If yes, write 'deleted' to output.txt and stop comparing lines.
#If no, continue with comparing next line.
if compare_machine == machine and compare_date == date and compare_time_1 == time_1 and compare_time_2 == time_2 and compare_time_3 == time_3:
output.write("deleted"+"\n")
break
else:
continue
#If no overlap between one line with any other line from the file, write that line to output.txt since it is no duplicate.
output.write(line)
input_file.close()
if __name__ == "__main__":
filter_file()
確か '14:12:40'とどまるべきと' 16:12:40'行くべき、右?あなたはそれを逆にしている。 – Tagc
テキストファイルには論理がありません。一度早く行くべきであり、もう一方は早いほうがよい。また、ログファイルは日付でソートされません。秩序は問題ですか? –
これは本当に間違いでしたが、テキストファイルは今や論理的でなければなりません。すべての明快さのためには、早いほうがよいでしょう。ログファイルが日付順にソートされていないのは事実ですが、それについては何もできません。 – Sander